Mem_Realloc: allow the pool to be NULL in which case the block's previous pool is...
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 6 Jun 2012 14:07:46 +0000 (14:07 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 6 Jun 2012 14:07:46 +0000 (14:07 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11825 d7cf8633-e32d-0410-b094-e92efae38249

zone.c

diff --git a/zone.c b/zone.c
index 2f756d0..1638636 100644 (file)
--- a/zone.c
+++ b/zone.c
@@ -382,7 +382,12 @@ void *_Mem_Alloc(mempool_t *pool, void *olddata, size_t size, size_t alignment,
                return NULL;
        }
        if (pool == NULL)
-               Sys_Error("Mem_Alloc: pool == NULL (alloc at %s:%i)", filename, fileline);
+       {
+               if(olddata)
+                       pool = ((memheader_t *)((unsigned char *) olddata - sizeof(memheader_t)))->pool;
+               else
+                       Sys_Error("Mem_Alloc: pool == NULL (alloc at %s:%i)", filename, fileline);
+       }
        if (mem_mutex)
                Thread_LockMutex(mem_mutex);
        if (developer_memory.integer)