diff --git a/src/gc/alloc_memory.c b/src/gc/alloc_memory.c index 908e5d3..b63e393 100644 --- a/src/gc/alloc_memory.c +++ b/src/gc/alloc_memory.c @@ -56,8 +56,10 @@ mem_sys_allocate(size_t size) #ifdef DETAIL_MEMORY_DEBUG fprintf(stderr, "Allocated %i at %p\n", size, ptr); #endif - if (!ptr && size) + if (!ptr && size) { + free(ptr); PANIC_OUT_OF_MEM(size); + } return ptr; } @@ -83,8 +85,10 @@ mem_sys_allocate_zeroed(size_t size) #ifdef DETAIL_MEMORY_DEBUG fprintf(stderr, "Allocated %i at %p\n", size, ptr); #endif - if (!ptr && size) + if (!ptr && size) { + free(ptr); PANIC_OUT_OF_MEM(size); + } return ptr; } @@ -118,8 +122,10 @@ mem_sys_realloc(ARGFREE(void *from), size_t size) #ifdef DETAIL_MEMORY_DEBUG fprintf(stderr, "Allocated %i at %p\n", size, ptr); #endif - if (!ptr && size) + if (!ptr && size) { + free(ptr); PANIC_OUT_OF_MEM(size); + } return ptr; } @@ -151,8 +157,10 @@ mem_sys_realloc_zeroed(ARGFREE(void *from), size_t size, size_t old_size) #ifdef DETAIL_MEMORY_DEBUG fprintf(stderr, "Allocated %i at %p\n", size, ptr); #endif - if (!ptr && size) + if (!ptr && size) { + free(ptr); PANIC_OUT_OF_MEM(size); + } if (size > old_size) memset((char*)ptr + old_size, 0, size - old_size);