aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory.c')
-rw-r--r--src/memory.c8
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;
}