PyObject_Malloc: make a tiny bit faster for platforms where malloc(0)

doesn't return NULL.

PyObject_Realloc:  better comment for why we don't call PyObject_Malloc(0).
This commit is contained in:
Tim Peters 2002-04-18 21:58:56 +00:00
parent 3e12071dbe
commit 64d80c9f40
1 changed files with 9 additions and 2 deletions

View File

@ -685,7 +685,11 @@ redirect:
* last chance to serve the request) or when the max memory limit * last chance to serve the request) or when the max memory limit
* has been reached. * has been reached.
*/ */
return (void *)malloc(nbytes ? nbytes : 1); #ifdef MALLOC_ZERO_RETURNS_NULL
if (nbytes == 0)
nbytes = 1;
#endif
return (void *)malloc(nbytes);
} }
/* free */ /* free */
@ -803,7 +807,10 @@ PyObject_Realloc(void *p, size_t nbytes)
} }
/* We're not managing this block. */ /* We're not managing this block. */
if (nbytes <= SMALL_REQUEST_THRESHOLD) { if (nbytes <= SMALL_REQUEST_THRESHOLD) {
/* Take over this block. */ /* Take over this block -- ask for at least one byte so
* we really do take it over (PyObject_Malloc(0) goes to
* the system malloc).
*/
bp = PyObject_Malloc(nbytes ? nbytes : 1); bp = PyObject_Malloc(nbytes ? nbytes : 1);
if (bp != NULL) { if (bp != NULL) {
memcpy(bp, p, nbytes); memcpy(bp, p, nbytes);