]> granicus.if.org Git - python/commitdiff
Only add 1 byte to all malloc calls when it is known that malloc(0) or
authorGuido van Rossum <guido@python.org>
Thu, 10 Jul 1997 22:40:54 +0000 (22:40 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 10 Jul 1997 22:40:54 +0000 (22:40 +0000)
realloc(p, 0) returns NULL.  See changes to configure script to be
checked in later.

Include/mymalloc.h

index 2de5310be7155702f2e4fa63e4888cfc72961483..944a4ddd52111e0d8e7f898bf938c23a1ccbef03 100644 (file)
@@ -78,14 +78,22 @@ extern void free Py_PROTO((ANY *)); /* XXX sometimes int on Unix old systems */
 #define NULL ((ANY *)0)
 #endif
 
+#ifdef MALLOC_ZERO_RETURNS_NULL
 /* XXX Always allocate one extra byte, since some malloc's return NULL
    XXX for malloc(0) or realloc(p, 0). */
-#define PyMem_NEW(type, n) ( (type *) malloc(1 + (n) * sizeof(type)) )
+#define _PyMem_EXTRA 1
+#else
+#define _PyMem_EXTRA 0
+#endif
+
+#define PyMem_NEW(type, n) \
+       ( (type *) malloc(_PyMem_EXTRA + (n) * sizeof(type)) )
 #define PyMem_RESIZE(p, type, n) \
        if ((p) == NULL) \
-               (p) =  (type *) malloc(1 + (n) * sizeof(type)); \
+               (p) =  (type *) malloc(_PyMem_EXTRA + (n) * sizeof(type)); \
        else \
-               (p) = (type *) realloc((ANY *)(p), 1 + (n) * sizeof(type))
+               (p) = (type *) realloc((ANY *)(p), \
+                                      _PyMem_EXTRA + (n) * sizeof(type))
 #define PyMem_DEL(p) free((ANY *)p)
 #define PyMem_XDEL(p) if ((p) == NULL) ; else PyMem_DEL(p)