forked from bartvdbraak/blender
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:
parent
6c8e3e303d
commit
cac3443d4e
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user