summaryrefslogtreecommitdiffstats
path: root/Include/pymem.h
diff options
context:
space:
mode:
Diffstat (limited to 'Include/pymem.h')
-rw-r--r--Include/pymem.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/Include/pymem.h b/Include/pymem.h
index 6b1105c..f8aef29 100644
--- a/Include/pymem.h
+++ b/Include/pymem.h
@@ -62,16 +62,11 @@ PyAPI_FUNC(void) PyMem_Free(void *);
#else /* ! PYMALLOC_DEBUG */
-#ifdef MALLOC_ZERO_RETURNS_NULL
+/* PyMem_MALLOC(0) means malloc(1). Some systems would return NULL
+ for malloc(0), which would be treated as an error. Some platforms
+ would return a pointer with no memory behind it, which would break
+ pymalloc. To solve these problems, allocate an extra byte. */
#define PyMem_MALLOC(n) malloc((n) ? (n) : 1)
-#else
-#define PyMem_MALLOC malloc
-#endif
-
-/* Caution: whether MALLOC_ZERO_RETURNS_NULL is #defined has nothing to
- do with whether platform realloc(non-NULL, 0) normally frees the memory
- or returns NULL. Rather than introduce yet another config variation,
- just make a realloc to 0 bytes act as if to 1 instead. */
#define PyMem_REALLOC(p, n) realloc((p), (n) ? (n) : 1)
#endif /* PYMALLOC_DEBUG */