[Python-Dev] Problem with the memory docs (original) (raw)

Tim Peters tim.one@comcast.net
Thu, 04 Apr 2002 15:48:52 -0500


[/F]

umm. I have to admit that it's rather ugly, but I'm pretty sure the following guarantees that requesting zero bytes will never return a NULL pointer:

static char nullbyte = MAGIC; void* malloc(int bytes) { if (bytes == 0) { #if DEBUGMODE if (*nullbyte != MAGIC) uh-oh #endif return &nullbyte; } ... void free(void* ptr) { if (ptr == &nullbyte) { #if DEBUGMODE if (*nullbyte != MAGIC) uh-oh #endif return; /* nothing to do */ } ...

Don't forget realloc too, and that malloc hasn't taken an int argument since before 1989 .

Sorry, but this is nuts, and Martin is right that I don't want Python to offer a "malloc wrapper" that doesn't meet the standard rules for malloc. Instead I intend to change the docs to say that Py_Malloc(0) acts like platform malloc(1), and leave it at that. I expect the _PyMem_EXTRA hack to go away too.