https://github.com/python/cpython/commit/94a4bd79a7ab7b0ff5f216782d6fdaff6ed348fc
commit: 94a4bd79a7ab7b0ff5f216782d6fdaff6ed348fc
branch: main
author: Kirill Podoprigora <kirill.ba...@mail.ru>
committer: serhiy-storchaka <storch...@gmail.com>
date: 2024-08-06T08:57:36+03:00
summary:

gh-122704: Fix reference leak in Modules/_pickle.c (GH-122705)

files:
M Modules/_pickle.c

diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index 5d9ee8cb6c679d..dc0ef0a184d205 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -1962,9 +1962,11 @@ whichmodule(PickleState *st, PyObject *global, PyObject 
*global_name, PyObject *
         PyErr_Format(st->PicklingError,
                      "Can't pickle %R: import of module %R failed",
                      global, module_name);
+        Py_DECREF(module_name);
         return NULL;
     }
     if (check_dotted_path(module, global_name, dotted_path) < 0) {
+        Py_DECREF(module_name);
         Py_DECREF(module);
         return NULL;
     }
@@ -1974,6 +1976,7 @@ whichmodule(PickleState *st, PyObject *global, PyObject 
*global_name, PyObject *
         PyErr_Format(st->PicklingError,
                      "Can't pickle %R: attribute lookup %S on %S failed",
                      global, global_name, module_name);
+        Py_DECREF(module_name);
         return NULL;
     }
     if (actual != global) {
@@ -1981,6 +1984,7 @@ whichmodule(PickleState *st, PyObject *global, PyObject 
*global_name, PyObject *
         PyErr_Format(st->PicklingError,
                      "Can't pickle %R: it's not the same object as %S.%S",
                      global, module_name, global_name);
+        Py_DECREF(module_name);
         return NULL;
     }
     Py_DECREF(actual);

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to