diff options
author | Davidlohr Bueso | 2010-10-15 19:03:25 +0200 |
---|---|---|
committer | Karel Zak | 2010-10-21 10:28:05 +0200 |
commit | d7df7ba2646fae6e9a7e083fb693eb35b702008c (patch) | |
tree | 28b0796929e2a5d12b46c8bacb66cfeeee76fcd6 /include | |
parent | libblkid: fix memory leak (diff) | |
download | kernel-qcow2-util-linux-d7df7ba2646fae6e9a7e083fb693eb35b702008c.tar.gz kernel-qcow2-util-linux-d7df7ba2646fae6e9a7e083fb693eb35b702008c.tar.xz kernel-qcow2-util-linux-d7df7ba2646fae6e9a7e083fb693eb35b702008c.zip |
xalloc: general purpose memory allocation handling wrappers
[kzak@redhat.com: - use %zu for size_t]
Signed-off-by: Davidlohr Bueso <dave@gnu.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/xalloc.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/xalloc.h b/include/xalloc.h new file mode 100644 index 000000000..2a8c78bc0 --- /dev/null +++ b/include/xalloc.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2010 Davidlohr Bueso <dave@gnu.org> + * + * This file may be redistributed under the terms of the + * GNU Lesser General Public License. + * + * General memory allocation wrappers for malloc, realloc and calloc + */ + +#ifndef UTIL_LINUX_XALLOC_H +#define UTIL_LINUX_XALLOC_H + +#include <stdlib.h> +#include <err.h> + +static inline __attribute__((alloc_size(1))) +void *xmalloc(const size_t size) +{ + void *ret = malloc(size); + + if (!ret && size) + err(EXIT_FAILURE, "cannot allocate %zu bytes", size); + return ret; +} + +static inline __attribute__((alloc_size(2))) +void *xrealloc(void *ptr, const size_t size) +{ + void *ret = realloc(ptr, size); + + if (!ret && size) + err(EXIT_FAILURE, "cannot allocate %zu bytes", size); + return ret; +} + +static inline __attribute__((alloc_size(1,2))) +void *xcalloc(const size_t nelems, const size_t size) +{ + void *ret = calloc(nelems, size); + + if (!ret && size && nelems) + err(EXIT_FAILURE, "cannot allocate %zu bytes", size); + return ret; +} + +#endif |