From b80e46eca4a8d5b9284ca8575c1aa16532a0c05e Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 30 Apr 2012 05:21:52 +0200 Subject: Issue #14687: Avoid an useless duplicated string in PyUnicode_Format() --- Objects/unicodeobject.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 8959a97..18bc07f 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -14051,20 +14051,16 @@ PyUnicode_Format(PyObject *format, PyObject *args) } } /* 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); + v = PyUnicode_Substring(temp, pindex, pindex + len); + if (v == NULL) + goto onError; + r = _PyAccu_Accumulate(&acc, v); + Py_DECREF(v); } - 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)) -- cgit v0.12