From 839f99ffbf5b01e585845a061830a6fa5f0743dc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 4 Aug 2004 16:42:37 +0000 Subject: forgot some files git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@104 fefdeb5f-60dc-0310-8127-8f9354f1896f --- polyp/xmalloc.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 polyp/xmalloc.c (limited to 'polyp/xmalloc.c') diff --git a/polyp/xmalloc.c b/polyp/xmalloc.c new file mode 100644 index 00000000..8ff3054d --- /dev/null +++ b/polyp/xmalloc.c @@ -0,0 +1,76 @@ +#include +#include +#include + +#include "memory.h" +#include "util.h" + +#define MAX_ALLOC_SIZE (1024*1024*20) + +#undef malloc +#undef free +#undef realloc +#undef strndup +#undef strdup + +static void oom(void) { + static const char e[] = "Not enough memory\n"; + pa_loop_write(2, e, sizeof(e)-1); + raise(SIGQUIT); + exit(1); +} + +void* pa_xmalloc(size_t size) { + void *p; + assert(size > 0); + assert(size < MAX_ALLOC_SIZE); + + if (!(p = malloc(size))) + oom(); + + return p; +} + +void* pa_xmalloc0(size_t size) { + void *p; + assert(size > 0); + assert(size < MAX_ALLOC_SIZE); + + if (!(p = calloc(1, size))) + oom(); + + return p; +} + +void *pa_xrealloc(void *ptr, size_t size) { + void *p; + assert(size > 0); + assert(size < MAX_ALLOC_SIZE); + + if (!(p = realloc(ptr, size))) + oom(); + return p; +} + +char *pa_xstrdup(const char *s) { + if (!s) + return NULL; + else { + char *r = strdup(s); + if (!r) + oom(); + + return r; + } +} + +char *pa_xstrndup(const char *s, size_t l) { + if (!s) + return NULL; + else { + char *r = strndup(s, l); + if (!r) + oom(); + return r; + } +} -- cgit