From 945f73751630db0420522b5d6af0629d90376a45 Mon Sep 17 00:00:00 2001 From: Ash Wolf Date: Wed, 12 Oct 2022 18:07:57 +0100 Subject: almost finished OSLib --- command_line/CmdLine/Src/OSLib/MemUtils.c | 41 ++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) (limited to 'command_line/CmdLine/Src/OSLib/MemUtils.c') diff --git a/command_line/CmdLine/Src/OSLib/MemUtils.c b/command_line/CmdLine/Src/OSLib/MemUtils.c index 4eb611c..fcacd81 100644 --- a/command_line/CmdLine/Src/OSLib/MemUtils.c +++ b/command_line/CmdLine/Src/OSLib/MemUtils.c @@ -1,21 +1,54 @@ #include "oslib.h" void *xmalloc(const char *what, int size) { - + void *ret; + + ret = malloc(size ? size : 1); + if (!ret) { + fprintf( + stderr, + "*** Out of memory when allocating %d bytes%s%s", + size, + what ? " for " : "", + what ? what : ""); + exit(-23); + return 0; + } + + return ret; } void *xcalloc(const char *what, int size) { + void *ret; + ret = xmalloc(what, size); + memset(ret, 0, size); + return ret; } void *xrealloc(const char *what, void *old, int size) { - + void *ret; + + ret = realloc(old, size ? size : 1); + if (!ret) { + fprintf( + stderr, + "*** Out of memory when resizing buffer to %d bytes%s%s", + size, + what ? " for " : "", + what ? what : ""); + exit(-23); + return 0; + } + + return ret; } char *xstrdup(const char *str) { - + return strcpy(xmalloc(0, strlen(str) + 1), str); } void xfree(void *ptr) { - + if (ptr) + free(ptr); } -- cgit v1.2.3