From f718cb3fb0d627cab8d952b94891e38238934090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 3 Feb 2025 08:31:31 +0100 Subject: [PATCH] xmalloc: calling xrealloc() or xreallocarray() with a 0-size is UB in C23 And likely to in future POSIX too. --- xmalloc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/xmalloc.c b/xmalloc.c index 0a67cdb2..ccfb5c48 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -32,15 +32,17 @@ xcalloc(size_t nmemb, size_t size) void * xrealloc(void *ptr, size_t size) { + xassert(size != 0); void *alloc = realloc(ptr, size); - return unlikely(size == 0) ? alloc : check_alloc(alloc); + return check_alloc(alloc); } void * xreallocarray(void *ptr, size_t n, size_t size) { + xassert(n != 0 && size != 0); void *alloc = reallocarray(ptr, n, size); - return unlikely(size == 0) ? alloc : check_alloc(alloc); + return check_alloc(alloc); } char *