(original) (raw)

changeset: 76658:08b54c635586 user: Victor Stinner victor.stinner@gmail.com date: Mon Apr 30 05:21:52 2012 +0200 files: Objects/unicodeobject.c description: Issue #14687: Avoid an useless duplicated string in PyUnicode_Format() diff -r 42fbb4f9b540 -r 08b54c635586 Objects/unicodeobject.c --- a/Objects/unicodeobject.c Mon Apr 30 05:19:21 2012 +0200 +++ b/Objects/unicodeobject.c Mon Apr 30 05:21:52 2012 +0200 @@ -14051,20 +14051,16 @@ } } /* Copy all characters, preserving len */ - if (temp != NULL) { - assert(pbuf == PyUnicode_DATA(temp)); - v = PyUnicode_Substring(temp, pindex, pindex + len); + if (pindex == 0 && len == PyUnicode_GET_LENGTH(temp)) { + r = _PyAccu_Accumulate(&acc, temp); } else { - const char *p = (const char *) pbuf; - assert(pbuf != NULL); - p += kind * pindex; - v = PyUnicode_FromKindAndData(kind, p, len); - } - if (v == NULL) - goto onError; - r = _PyAccu_Accumulate(&acc, v); - Py_DECREF(v); + v = PyUnicode_Substring(temp, pindex, pindex + len); + if (v == NULL) + goto onError; + r = _PyAccu_Accumulate(&acc, v); + Py_DECREF(v); + } if (r) goto onError; if (width > len && repeat_accumulate(&acc, blank, width - len)) /victor.stinner@gmail.com