diff --git a/xmalloc.h b/xmalloc.h new file mode 100644 index 00000000..23705bdd --- /dev/null +++ b/xmalloc.h @@ -0,0 +1,33 @@ +#ifndef _XMALLOC_H +#define _XMALLOC_H 1 + +#include +#include + +__attribute__ ((noreturn, unused)) static void out_of_memory() { + fprintf(stderr,"out of memory\n"); + abort(); +} + +__attribute__ ((unused)) static void *xmalloc(size_t size) { + void *ptr = malloc(size); + if (ptr == NULL) + out_of_memory(); + return(ptr); +} + +__attribute__ ((unused)) static void *xrealloc(void *ptr, size_t size) { + void *outptr = realloc(ptr, size); + if (outptr == NULL) + out_of_memory(); + return(outptr); +} + +__attribute__ ((unused)) static char *xstrndup(const char *s, size_t n) { + char *ptr = strndup(s, n); + if (ptr == NULL) + out_of_memory(); + return(ptr); +} + +#endif