summaryrefslogtreecommitdiffstats
path: root/Objects/dictobject.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-07-17 23:00:45 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2013-07-17 23:00:45 (GMT)
commitf97dfd7b59c6472dc209f85c8f0a479dd6649859 (patch)
treeb4352029df8068df834ebf0e5ec6f0c5f1cdd104 /Objects/dictobject.c
parent4755beac3cb918a64af956b3fda3ebb5ee85c96b (diff)
downloadcpython-f97dfd7b59c6472dc209f85c8f0a479dd6649859.zip
cpython-f97dfd7b59c6472dc209f85c8f0a479dd6649859.tar.gz
cpython-f97dfd7b59c6472dc209f85c8f0a479dd6649859.tar.bz2
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.
Diffstat (limited to 'Objects/dictobject.c')
-rw-r--r--Objects/dictobject.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 3243061..36c710e 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);