From d7df7ba2646fae6e9a7e083fb693eb35b702008c Mon Sep 17 00:00:00 2001 From: Davidlohr Bueso Date: Fri, 15 Oct 2010 14:03:25 -0300 Subject: [PATCH] xalloc: general purpose memory allocation handling wrappers [kzak@redhat.com: - use %zu for size_t] Signed-off-by: Davidlohr Bueso Signed-off-by: Karel Zak --- include/xalloc.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 include/xalloc.h diff --git a/include/xalloc.h b/include/xalloc.h new file mode 100644 index 00000000..2a8c78bc --- /dev/null +++ b/include/xalloc.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2010 Davidlohr Bueso + * + * 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 +#include + +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 -- 2.39.5