From: Victor Stinner Date: Thu, 26 May 2011 12:24:30 +0000 (+0200) Subject: set_repr(): handle correctly PyUnicode_FromUnicode() error (MemoryError) X-Git-Tag: v3.3.0a1~2183^2~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a1a807b6efdbdaa0af7da4aff46a4a205d87e8f9;p=thirdparty%2FPython%2Fcpython.git set_repr(): handle correctly PyUnicode_FromUnicode() error (MemoryError) Bug found by the Clang Static Analyzer. --- diff --git a/Objects/setobject.c b/Objects/setobject.c index 22243eaa6c03..ebfddb398ccc 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -607,16 +607,18 @@ set_repr(PySetObject *so) goto done; newsize = PyUnicode_GET_SIZE(listrepr); result = PyUnicode_FromUnicode(NULL, newsize); - if (result) { - u = PyUnicode_AS_UNICODE(result); - *u++ = '{'; - /* Omit the brackets from the listrepr */ - Py_UNICODE_COPY(u, PyUnicode_AS_UNICODE(listrepr)+1, - newsize-2); - u += newsize-2; - *u = '}'; - } + if (result == NULL) + goto done; + + u = PyUnicode_AS_UNICODE(result); + *u++ = '{'; + /* Omit the brackets from the listrepr */ + Py_UNICODE_COPY(u, PyUnicode_AS_UNICODE(listrepr)+1, + newsize-2); + u += newsize-2; + *u = '}'; Py_DECREF(listrepr); + if (Py_TYPE(so) != &PySet_Type) { PyObject *tmp = PyUnicode_FromFormat("%s(%U)", Py_TYPE(so)->tp_name,