common: Add additional memory utilities (xzalloc() etc.)

This commit is contained in:
John Lindgren 2022-09-16 18:41:02 -04:00
parent b89f7bfc0d
commit cb40cdc36c
35 changed files with 193 additions and 167 deletions

40
include/common/mem.h Normal file
View file

@ -0,0 +1,40 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __LABWC_MEM_H
#define __LABWC_MEM_H
#include <stdlib.h>
/*
* As defined in busybox, weston, etc.
* Allocates zero-filled memory; calls exit() on error.
* Returns NULL only if (size == 0).
*/
void *xzalloc(size_t size);
/*
* As defined in FreeBSD.
* Like realloc(), but calls exit() on error.
* Returns NULL only if (size == 0).
* Does NOT zero-fill memory.
*/
void *xrealloc(void *ptr, size_t size);
/* malloc() is a specific case of realloc() */
#define xmalloc(size) xrealloc(NULL, (size))
/*
* As defined in FreeBSD.
* Allocates a copy of <str>; calls exit() on error.
* Requires (str != NULL) and never returns NULL.
*/
char *xstrdup(const char *str);
/*
* Frees memory pointed to by <ptr> and sets <ptr> to NULL.
* Does nothing if <ptr> is already NULL.
*/
#define zfree(ptr) do { \
free(ptr); (ptr) = NULL; \
} while (0)
#endif /* __LABWC_MEM_H */

View file

@ -1,9 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __LABWC_ZFREE_H
#define __LABWC_ZFREE_H
void __zfree(void **ptr);
#define zfree(ptr) __zfree((void **)&(ptr))
#endif /* __LABWC_ZFREE_H */