From 2baf45e659914d052eb302cf69ba8fc09dbd3bf0 Mon Sep 17 00:00:00 2001 From: Bradley Bell Date: Thu, 8 Nov 2001 10:17:40 +0000 Subject: [PATCH] added d_realloc/mem_realloc functions --- include/u_mem.h | 6 +++++- mem/mem.c | 30 ++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/include/u_mem.h b/include/u_mem.h index 61c683c4..cad21f7d 100644 --- a/include/u_mem.h +++ b/include/u_mem.h @@ -21,13 +21,15 @@ extern ubyte virtual_memory_on; extern int show_mem_info; -void * mem_display_blocks(); +void mem_display_blocks(); extern void * mem_malloc( unsigned int size, char * var, char * file, int line, int fill_zero ); +extern void * mem_realloc( void * buffer, unsigned int size, char * var, char * file, int line ); extern void mem_free( void * buffer ); /* DPH: Changed malloc, etc. to d_malloc. Overloading system calls is very evil and error prone */ #define d_malloc(size) mem_malloc((size),"Unknown", __FILE__,__LINE__, 0 ) #define d_calloc(n,size) mem_malloc((n*size),"Unknown", __FILE__,__LINE__, 1 ) +#define d_realloc(ptr,size) mem_realloc((ptr),(size),"Unknown", __FILE__,__LINE__ ) #define d_free(ptr) do{ mem_free(ptr); ptr=NULL; } while(0) #define MALLOC( var, type, count ) (var=(type *)mem_malloc((count)*sizeof(type),#var, __FILE__,__LINE__,0 )) @@ -38,6 +40,8 @@ void mem_validate_heap(); #else #define d_malloc(size) malloc(size) +#define d_calloc(size) calloc(n*size) +#define d_realloc(ptr,size) realloc(ptr,size) #define d_free(ptr) do{ free(ptr); ptr=NULL; } while(0) #define MALLOC( var, type, count ) (var=(type *)malloc((count)*sizeof(type))) diff --git a/mem/mem.c b/mem/mem.c index e5511b1d..744aaa87 100644 --- a/mem/mem.c +++ b/mem/mem.c @@ -13,13 +13,16 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. /* * $Source: /cvs/cvsroot/d2x/mem/mem.c,v $ - * $Revision: 1.5 $ + * $Revision: 1.6 $ * $Author: bradleyb $ - * $Date: 2001-10-19 08:06:20 $ + * $Date: 2001-11-08 10:17:40 $ * * Files for debugging memory allocator * * $Log: not supported by cvs2svn $ + * Revision 1.5 2001/10/19 08:06:20 bradleyb + * Partial application of linux/alpha patch. Courtesy of Falk Hueffner + * */ #ifdef HAVE_CONFIG_H @@ -660,3 +663,26 @@ void PurgeTempMem() } #endif + +void *mem_realloc(void * buffer, unsigned int size, char * var, char * filename, int line) +{ + void *newbuffer; + int id; + + if (size == 0) { + mem_free(buffer); + newbuffer = NULL; + } else if (buffer == NULL) { + newbuffer = mem_malloc(size, var, filename, line, 0); + } else { + newbuffer = mem_malloc(size, var, filename, line, 0); + if (newbuffer != NULL) { + id = mem_find_id(buffer); + if (MallocSize[id] < size) + size = MallocSize[id]; + memcpy(newbuffer, buffer, size); + mem_free(buffer); + } + } + return newbuffer; +} -- 2.39.2