Guardedalloc: added MEM_reallocN function to do simple alloc/memcpy/free,

not as optimized as a system realloc but I've had to do this often enough
manually to justify a utility function.
This commit is contained in:
Brecht Van Lommel 2010-02-08 14:59:59 +00:00
parent 6c8e3e303d
commit cac3443d4e
2 changed files with 29 additions and 0 deletions

@ -84,6 +84,13 @@ extern "C" {
* newly allocated block. */
void *MEM_dupallocN(void *vmemh);
/**
* Reallocates a block of memory, and returns pointer to the newly
* allocated block, the old one is freed. this is not as optimized
* as a system realloc but just makes a new allocation and copies
* over from existing memory. */
void *MEM_reallocN(void *vmemh, unsigned int len);
/**
* Allocate a block of memory of size len, with tag name str. The
* memory is cleared. The name must be static, because only a

@ -225,6 +225,28 @@ void *MEM_dupallocN(void *vmemh)
return newp;
}
void *MEM_reallocN(void *vmemh, unsigned int len)
{
void *newp= NULL;
if (vmemh) {
MemHead *memh= vmemh;
memh--;
newp= MEM_mallocN(len, memh->name);
if(newp) {
if(len < memh->len)
memcpy(newp, vmemh, len);
else
memcpy(newp, vmemh, memh->len);
}
MEM_freeN(vmemh);
}
return newp;
}
static void make_memhead_header(MemHead *memh, unsigned int len, const char *str)
{
MemTail *memt;