From: Victor Stinner Date: Wed, 17 Jul 2013 23:00:45 +0000 (+0200) Subject: Issue #18408: Fix dict_repr(), don't call PyObject_Repr() with an exception set X-Git-Tag: v3.4.0a1~157 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f97dfd7b59c6472dc209f85c8f0a479dd6649859;p=python Issue #18408: Fix dict_repr(), don't call PyObject_Repr() with an exception set PyObject_Repr() can removes the current exception. For example, module_repr() calls PyErr_Clear() if calling loader.module_repr(mod) failed. --- diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 3243061b68..36c710ed5b 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -1443,6 +1443,9 @@ dict_repr(PyDictObject *mp) Py_INCREF(value); s = PyObject_Repr(key); PyUnicode_Append(&s, colon); + if (s == NULL) + goto Done; + PyUnicode_AppendAndDel(&s, PyObject_Repr(value)); Py_DECREF(key); Py_DECREF(value);