[PATCH] malloc: Add asserts for malloc assumptions

Wilco Dijkstra Wilco.Dijkstra@arm.com
Mon Mar 2 13:17:58 GMT 2026


Currently malloc has various assumptions, some documented, some implicit.
Add a few static asserts to check the most fundamental assumptions.
Remove some odd #define void.

---

diff --git a/malloc/malloc.c b/malloc/malloc.c
index b87280228a0b6e07f5a38e6b45af842fa29c34ac..a7d0f685e16ea91d68d4d82924cb960fe9acb1a0 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -198,14 +198,6 @@
     There are several other #defined constants and macros that you
     probably don't want to touch unless you are extending or adapting malloc.  */
 
-/*
-  void* is the pointer type that malloc should say it returns
-*/
-
-#ifndef void
-#define void      void
-#endif /*void*/
-
 #include <stddef.h>   /* for size_t */
 #include <stdlib.h>   /* for getenv(), abort() */
 #include <unistd.h>   /* for __libc_enable_secure */
@@ -259,6 +251,15 @@
 #include <sys/random.h>
 #include <not-cancel.h>
 
+_Static_assert (sizeof (unsigned long) == sizeof (size_t),
+		"size_t must have same size as unsigned long");
+_Static_assert (sizeof (void *) == sizeof (size_t),
+		"size_t must have same size as pointers");
+_Static_assert (sizeof (void *) == 4 || sizeof (void *) == 8,
+		"pointers must be 4 or 8 bytes");
+_Static_assert (PTRDIFF_MAX <= SIZE_MAX / 2,
+		"PTRDIFF_MAX is not more than half of SIZE_MAX");
+
 /*
   Debugging:
 
@@ -1263,9 +1264,6 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 static __always_inline size_t
 checked_request2size (size_t req) __nonnull (1)
 {
-  _Static_assert (PTRDIFF_MAX <= SIZE_MAX / 2,
-                  "PTRDIFF_MAX is not more than half of SIZE_MAX");
-
   if (__glibc_unlikely (req > PTRDIFF_MAX))
     return SIZE_MAX;
 



More information about the Libc-alpha mailing list