PyMem_MALLOC (was [Python-Dev] Snake farm)

Tim Peters tim.one@comcast.net
Fri, 22 Nov 2002 12:45:49 -0500


[Marc Recht]
> What about changing
> PyMem_MALLOC malloc
> to
> #define PyMem_MALLOC(n)     n ? malloc(n) : NULL

No, but expanding to malloc(n || 1) or malloc(n ? n : 1) would be 
fine.  Code in Python uses a NULL return as an indication that a memory 
operation failed, so returning NULL is never appropriate for a 
PyMem_Malloc(0) call -- the Python API guarantees that its memory 
functions return NULL to mean out-of-memory, and that 0 is an OK 
argument.

The configuration cruft should go away here.  It's proven itself too 
brittle too many times.  That is, we should pretend that all platforms 
are insane, and never pass 0 to any platform's malloc or realloc.