From: Victor Stinner Date: Sun, 17 Aug 2014 19:12:18 +0000 (+0200) Subject: Optimize PyBytes_FromObject(): only overallocate when size=0 to not get the X-Git-Tag: v3.5.0a1~1051 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=88d146b7b9cece5c3e2e85feedce3417a589e8c3;p=python Optimize PyBytes_FromObject(): only overallocate when size=0 to not get the empty string singleton --- diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index ca565eb566..c5af25350e 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -3174,10 +3174,12 @@ PyBytes_FromObject(PyObject *x) returning a shared empty bytes string. This required because we want to call _PyBytes_Resize() the returned object, which we can only do on bytes objects with refcount == 1. */ - size += 1; + if (size == 0) + size = 1; new = PyBytes_FromStringAndSize(NULL, size); if (new == NULL) return NULL; + assert(Py_REFCNT(new) == 1); /* Get the iterator */ it = PyObject_GetIter(x);