diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-07-17 23:00:45 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-07-17 23:00:45 (GMT) |
commit | f97dfd7b59c6472dc209f85c8f0a479dd6649859 (patch) | |
tree | b4352029df8068df834ebf0e5ec6f0c5f1cdd104 /Objects/dictobject.c | |
parent | 4755beac3cb918a64af956b3fda3ebb5ee85c96b (diff) | |
download | cpython-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.c | 3 |
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); |