diff options
| -rw-r--r-- | src/memory.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/memory.c b/src/memory.c index d8de483..97bc627 100644 --- a/src/memory.c +++ b/src/memory.c @@ -338,11 +338,11 @@ calloc(size_t nmemb, size_t size) void * __attribute__((used)) realloc(void *ptr, size_t size) { - if (ptr) - g_atomic_int_add(&teco_memory_usage, -dlmalloc_usable_size(ptr)); + gssize len = ptr ? dlmalloc_usable_size(ptr) : 0; ptr = dlrealloc(ptr, size); - if (G_LIKELY(ptr != NULL)) - g_atomic_int_add(&teco_memory_usage, dlmalloc_usable_size(ptr)); + gssize delta = (G_LIKELY(ptr != NULL) ? (gssize)dlmalloc_usable_size(ptr) : 0) - len; + if (delta != 0) + g_atomic_int_add(&teco_memory_usage, delta); return ptr; } |
