From: Davidlohr Bueso Date: Fri, 15 Oct 2010 17:03:25 +0000 (-0300) Subject: xalloc: general purpose memory allocation handling wrappers X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7df7ba2646fae6e9a7e083fb693eb35b702008c;p=util-linux 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 --- 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