From a1f7f2869ec2bd860d5b4e4b39736ca877afdf6f Mon Sep 17 00:00:00 2001 From: Hisham Date: Sun, 31 Jan 2016 12:01:48 +0100 Subject: [PATCH] Add allocation tests --- XAlloc.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ XAlloc.h | 20 ++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 XAlloc.c create mode 100644 XAlloc.h diff --git a/XAlloc.c b/XAlloc.c new file mode 100644 index 00000000..6eb3d4f6 --- /dev/null +++ b/XAlloc.c @@ -0,0 +1,55 @@ + +#include "XAlloc.h" +#include "RichString.h" + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#include +#include + +/*{ +#include +}*/ + +static char oomMessage[] = "Out of memory!\n"; + +void* xMalloc(size_t size) { + void* data = malloc(size); + if (!data && size > 0) { + curs_set(1); + endwin(); + write(2, oomMessage, sizeof oomMessage); + } + return data; +} + +void* xCalloc(size_t nmemb, size_t size) { + void* data = calloc(nmemb, size); + if (!data && nmemb > 0 && size > 0) { + curs_set(1); + endwin(); + write(2, oomMessage, sizeof oomMessage); + } + return data; +} + +void* xRealloc(void* ptr, size_t size) { + void* data = realloc(ptr, size); + if (!data && size > 0) { + curs_set(1); + endwin(); + write(2, oomMessage, sizeof oomMessage); + } + return data; +} + +char* xStrdup(const char* str) { + char* data = strdup(str); + if (!data && str) { + curs_set(1); + endwin(); + write(2, oomMessage, sizeof oomMessage); + } + return data; +} diff --git a/XAlloc.h b/XAlloc.h new file mode 100644 index 00000000..3cc060d9 --- /dev/null +++ b/XAlloc.h @@ -0,0 +1,20 @@ +/* Do not edit this file. It was automatically generated. */ + +#ifndef HEADER_XAlloc +#define HEADER_XAlloc + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include + +void* xMalloc(size_t size); + +void* xCalloc(size_t nmemb, size_t size); + +void* xRealloc(void* ptr, size_t size); + +char* xStrdup(const char* str); + +#endif