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:
parent
3e12071dbe
commit
64d80c9f40
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue