From: Fred Drake Date: Thu, 13 Apr 2000 14:10:44 +0000 (+0000) Subject: M.-A. Lemburg : X-Git-Tag: v2.0b1~2043 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e998bc6589790e08c327449c6b2864a7f9c6b5b;p=python M.-A. Lemburg : Fixed problem with Unicode string concatenation: u = (u"abc" u"abc") previously dumped core. --- diff --git a/Python/compile.c b/Python/compile.c index 97ab99cff7..453aae35e9 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -984,11 +984,32 @@ parsestrplus(n) REQ(CHILD(n, 0), STRING); if ((v = parsestr(STR(CHILD(n, 0)))) != NULL) { /* String literal concatenation */ - for (i = 1; i < NCH(n) && v != NULL; i++) { - PyString_ConcatAndDel(&v, parsestr(STR(CHILD(n, i)))); + for (i = 1; i < NCH(n); i++) { + PyObject *s; + s = parsestr(STR(CHILD(n, i))); + if (s == NULL) + goto onError; + if (PyString_Check(v) && PyString_Check(s)) { + PyString_ConcatAndDel(&v, s); + if (v == NULL) + goto onError; + } + else { + PyObject *temp; + temp = PyUnicode_Concat(v, s); + Py_DECREF(s); + if (temp == NULL) + goto onError; + Py_DECREF(v); + v = temp; + } } } return v; + + onError: + Py_XDECREF(v); + return NULL; } static void