From 621e8c5a7f649248444a9f9ccfa6b20987a7a3a6 Mon Sep 17 00:00:00 2001 From: avolkov Date: Mon, 19 Oct 2009 10:09:33 +0000 Subject: [PATCH] Make HRealloc() check the return the same way HMalloc() does git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3230 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/libs/memory/w_memlib.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/sc2/src/libs/memory/w_memlib.c b/sc2/src/libs/memory/w_memlib.c index ac7f2a2df..232ebdb97 100644 --- a/sc2/src/libs/memory/w_memlib.c +++ b/sc2/src/libs/memory/w_memlib.c @@ -47,7 +47,8 @@ HMalloc (int size) if (size < 0) { - log_add (log_Fatal, "Fatal Error: Request for negative amount of memory %d!", size); + log_add (log_Fatal, "HMalloc() FATAL: " + "request for negative amount of memory %d!", size); fflush (stderr); explode (); } @@ -55,7 +56,7 @@ HMalloc (int size) p = malloc (size); if (p == NULL) { - log_add (log_Fatal, "Fatal Error: HMalloc(): out of memory."); + log_add (log_Fatal, "HMalloc() FATAL: out of memory."); fflush (stderr); explode (); } @@ -85,7 +86,22 @@ HCalloc (int size) void * HRealloc (void *p, int size) { - // XXX: We assume throughout that HRealloc returns a valid pointer. - // Checks similar to HMalloc are needed here. - return realloc (p, size); + if (size < 0) + { + log_add (log_Fatal, "HRealloc() FATAL: " + "request for negative amount of memory %d!", size); + fflush (stderr); + explode (); + } + + fprintf (stderr, "HRealloc(): reallocing %p to %d\n", p, size); + + p = realloc (p, size); + if (!p && size > 0) + { + log_add (log_Fatal, "HRealloc() FATAL: out of memory."); + fflush (stderr); + explode (); + } + return p; }