summaryrefslogtreecommitdiffstats
path: root/Python/_warnings.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2020-03-02 20:05:08 (GMT)
committerGitHub <noreply@github.com>2020-03-02 20:05:08 (GMT)
commit2d2f85517f8216146a2f888d1ad4d765b3be2339 (patch)
tree06b3f2306d63b292eb6a49e5772d295ae6eed4ce /Python/_warnings.c
parent89aa4694fc8c6d190325ef8ed6ce6a6b8efb3e50 (diff)
downloadcpython-2d2f85517f8216146a2f888d1ad4d765b3be2339.zip
cpython-2d2f85517f8216146a2f888d1ad4d765b3be2339.tar.gz
cpython-2d2f85517f8216146a2f888d1ad4d765b3be2339.tar.bz2
bpo-39831: Fix a reference leak in PyErr_WarnEx(). (GH-18750)
Diffstat (limited to 'Python/_warnings.c')
-rw-r--r--Python/_warnings.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 9ea81bb..92378fa 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -859,11 +859,11 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
int rc;
if (PyErr_Occurred()) {
- return 0;
+ goto handle_error;
}
*registry = PyDict_New();
if (*registry == NULL)
- return 0;
+ goto handle_error;
rc = _PyDict_SetItemId(globals, &PyId___warningregistry__, *registry);
if (rc < 0)
@@ -893,6 +893,7 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
dangling reference. */
Py_XDECREF(*registry);
Py_XDECREF(*module);
+ Py_XDECREF(*filename);
return 0;
}