Skip to content

Commit 151fcec

Browse files
[3.7] bpo-39831: Fix a reference leak in PyErr_WarnEx(). (pythonGH-18750).
(cherry picked from commit 2d2f855) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parent 7ca251b commit 151fcec

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

‎Python/_warnings.c‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -737,8 +737,10 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
737737
int kind;
738738
void *data;
739739

740-
if (PyUnicode_READY(*filename))
740+
if (PyUnicode_READY(*filename)) {
741+
Py_DECREF(*filename);
741742
goto handle_error;
743+
}
742744

743745
len = PyUnicode_GetLength(*filename);
744746
kind = PyUnicode_KIND(*filename);
@@ -761,7 +763,7 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
761763
Py_INCREF(*filename);
762764
}
763765
else {
764-
*filename = NULL;
766+
Py_CLEAR(*filename);
765767
if (*module != Py_None && _PyUnicode_EqualToASCIIString(*module, "__main__")) {
766768
PyObject *argv = _PySys_GetObjectId(&PyId_argv);
767769
/* PyList_Check() is needed because sys.argv is set to None during

0 commit comments

Comments
 (0)