Commit 826cedcf authored by Guido van Rossum's avatar Guido van Rossum

Only add 1 byte to all malloc calls when it is known that malloc(0) or

realloc(p, 0) returns NULL.  See changes to configure script to be
checked in later.
parent 4217bb3c
...@@ -78,14 +78,22 @@ extern void free Py_PROTO((ANY *)); /* XXX sometimes int on Unix old systems */ ...@@ -78,14 +78,22 @@ extern void free Py_PROTO((ANY *)); /* XXX sometimes int on Unix old systems */
#define NULL ((ANY *)0) #define NULL ((ANY *)0)
#endif #endif
#ifdef MALLOC_ZERO_RETURNS_NULL
/* XXX Always allocate one extra byte, since some malloc's return NULL /* XXX Always allocate one extra byte, since some malloc's return NULL
XXX for malloc(0) or realloc(p, 0). */ 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) \ #define PyMem_RESIZE(p, type, n) \
if ((p) == NULL) \ if ((p) == NULL) \
(p) = (type *) malloc(1 + (n) * sizeof(type)); \ (p) = (type *) malloc(_PyMem_EXTRA + (n) * sizeof(type)); \
else \ 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_DEL(p) free((ANY *)p)
#define PyMem_XDEL(p) if ((p) == NULL) ; else PyMem_DEL(p) #define PyMem_XDEL(p) if ((p) == NULL) ; else PyMem_DEL(p)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment