]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-39831: Fix a reference leak in PyErr_WarnEx(). (GH-18750)
authorSerhiy Storchaka <storchaka@gmail.com>
Mon, 2 Mar 2020 20:05:08 +0000 (22:05 +0200)
committerGitHub <noreply@github.com>
Mon, 2 Mar 2020 20:05:08 +0000 (22:05 +0200)
Python/_warnings.c

index 9ea81bbc6e65f1d09bf9c3499415807b791e6a51..92378faa61f3e3fc3794496b5148cee504b74bf5 100644 (file)
@@ -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;
 }