revision 2.164 of object.c
Whether platform malloc(0) returns NULL has nothing to do with whether
platform realloc(p, 0) returns NULL, so MALLOC_ZERO_RETURNS_NULL can
be correctly undefined yet realloc(p, 0) can return NULL anyway.
Prevent realloc(p, 0) doing free(p) and returning NULL via a different
hack. Would probably be better to get rid of MALLOC_ZERO_RETURNS_NULL
entirely.
Bugfix candidate.
void *
PyMem_Realloc(void *p, size_t nbytes)
{
-#if _PyMem_EXTRA > 0
- if (nbytes == 0)
- nbytes = _PyMem_EXTRA;
-#endif
- return PyMem_REALLOC(p, nbytes);
+ /* See comment near MALLOC_ZERO_RETURNS_NULL in pyport.h. */
+ return PyMem_REALLOC(p, nbytes ? nbytes : 1);
}
void