diff --git a/src/alloc.c b/src/alloc.c index 173beba..1d3281e 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -35,12 +35,22 @@ verifying_alloc(void *opaque, void *oldptr, size_t oldsize, size_t newsize) } if (newsize == 0) { - void *newptr = ALLOCATOR_CALL(*wrapped, oldptr_actual, oldsize + sizeof(size_t), 0); + void *newptr = ALLOCATOR_CALL( + *wrapped, + oldptr_actual, + oldsize == 0 ? 0 : oldsize + sizeof(size_t), + 0 + ); assert(newptr == NULL); return newptr; } - size_t *newptr = ALLOCATOR_CALL(*wrapped, oldptr_actual, oldsize + sizeof(size_t), newsize + sizeof(size_t)); + size_t *newptr = ALLOCATOR_CALL( + *wrapped, + oldptr_actual, + oldsize == 0 ? 0 : oldsize + sizeof(size_t), + newsize + sizeof(size_t) + ); if (newptr == NULL) { return NULL; }