Skip to content

Commit 8f3ced6

Browse files
committed
Fix refleak introduced by 4f730c045f5f (issue #18408) and unveiled by 95eea8624d05 (issue #16596).
1 parent 354b5ff commit 8f3ced6

1 file changed

Lines changed: 4 additions & 8 deletions

File tree

Python/ceval.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3850,20 +3850,16 @@ call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f)
38503850
{
38513851
PyObject *type, *value, *traceback, *orig_traceback, *arg;
38523852
int err;
3853-
PyErr_Fetch(&type, &value, &traceback);
3853+
PyErr_Fetch(&type, &value, &orig_traceback);
38543854
if (value == NULL) {
38553855
value = Py_None;
38563856
Py_INCREF(value);
38573857
}
3858-
PyErr_NormalizeException(&type, &value, &traceback);
3859-
orig_traceback = traceback;
3860-
if (traceback == NULL) {
3861-
Py_INCREF(Py_None);
3862-
traceback = Py_None;
3863-
}
3858+
PyErr_NormalizeException(&type, &value, &orig_traceback);
3859+
traceback = (orig_traceback != NULL) ? orig_traceback : Py_None;
38643860
arg = PyTuple_Pack(3, type, value, traceback);
38653861
if (arg == NULL) {
3866-
PyErr_Restore(type, value, traceback);
3862+
PyErr_Restore(type, value, orig_traceback);
38673863
return;
38683864
}
38693865
err = call_trace(func, self, f, PyTrace_EXCEPTION, arg);

0 commit comments

Comments
 (0)