From 2a8d76d7342b0064284075bb5b88d964eda32e87 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Aug 2013 17:53:41 +0000 Subject: add versions of MEM_reallocN, MEM_recallocN which take a string arg so new allocs have an ID, changing existing functions signatures would be too disruptive at the moment. --- intern/guardedalloc/MEM_guardedalloc.h | 13 +++++++++++++ intern/guardedalloc/intern/mallocn.c | 19 +++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) (limited to 'intern/guardedalloc') diff --git a/intern/guardedalloc/MEM_guardedalloc.h b/intern/guardedalloc/MEM_guardedalloc.h index d49dc4b4dd9..764340beb71 100644 --- a/intern/guardedalloc/MEM_guardedalloc.h +++ b/intern/guardedalloc/MEM_guardedalloc.h @@ -102,6 +102,19 @@ extern "C" { #endif ; + void *MEM_reallocN_id(void *vmemh, size_t len, const char *str) +#if MEM_GNU_ATTRIBUTES + __attribute__((warn_unused_result)) + __attribute__((alloc_size(2))) +#endif + ; + void *MEM_recallocN_id(void *vmemh, size_t len, const char *str) +#if MEM_GNU_ATTRIBUTES + __attribute__((warn_unused_result)) + __attribute__((alloc_size(2))) +#endif + ; + /** * Reallocates a block of memory, and returns pointer to the newly * allocated block, the old one is freed. this is not as optimized diff --git a/intern/guardedalloc/intern/mallocn.c b/intern/guardedalloc/intern/mallocn.c index 4a72089f8f7..3a37b03ece4 100644 --- a/intern/guardedalloc/intern/mallocn.c +++ b/intern/guardedalloc/intern/mallocn.c @@ -371,7 +371,7 @@ void *MEM_dupallocN(const void *vmemh) return newp; } -void *MEM_reallocN(void *vmemh, size_t len) +void *MEM_reallocN_id(void *vmemh, size_t len, const char *str) { void *newp = NULL; @@ -394,13 +394,13 @@ void *MEM_reallocN(void *vmemh, size_t len) MEM_freeN(vmemh); } else { - newp = MEM_mallocN(len, __func__); + newp = MEM_mallocN(len, str); } return newp; } -void *MEM_recallocN(void *vmemh, size_t len) +void *MEM_recallocN_id(void *vmemh, size_t len, const char *str) { void *newp = NULL; @@ -428,12 +428,23 @@ void *MEM_recallocN(void *vmemh, size_t len) MEM_freeN(vmemh); } else { - newp = MEM_callocN(len, __func__); + newp = MEM_callocN(len, str); } return newp; } + +void *MEM_reallocN(void *vmemh, size_t len) +{ + return MEM_reallocN_id(vmemh, len, __func__); +} +void *MEM_recallocN(void *vmemh, size_t len) +{ + return MEM_recallocN_id(vmemh, len, __func__); +} + + #ifdef DEBUG_BACKTRACE # if defined(__linux__) || defined(__APPLE__) static void make_memhead_backtrace(MemHead *memh) -- cgit v1.2.3