https://github.com/python/cpython/commit/50c14719fbd47f500dd1a468998201d22475126d
commit: 50c14719fbd47f500dd1a468998201d22475126d
branch: main
author: Shamil <[email protected]>
committer: pablogsal <[email protected]>
date: 2026-02-19T20:42:55Z
summary:

gh-144986: Fix memory leak in atexit.register() (#144987)

files:
A Misc/NEWS.d/next/Library/2026-02-19-00-00-00.gh-issue-144986.atexit-leak.rst
M Modules/atexitmodule.c

diff --git 
a/Misc/NEWS.d/next/Library/2026-02-19-00-00-00.gh-issue-144986.atexit-leak.rst 
b/Misc/NEWS.d/next/Library/2026-02-19-00-00-00.gh-issue-144986.atexit-leak.rst
new file mode 100644
index 00000000000000..841c3758ec4df1
--- /dev/null
+++ 
b/Misc/NEWS.d/next/Library/2026-02-19-00-00-00.gh-issue-144986.atexit-leak.rst
@@ -0,0 +1,2 @@
+Fix a memory leak in :func:`atexit.register`.
+Patch by Shamil Abdulaev.
diff --git a/Modules/atexitmodule.c b/Modules/atexitmodule.c
index 1c901d9124d9ca..3ddbbd59a1ef0c 100644
--- a/Modules/atexitmodule.c
+++ b/Modules/atexitmodule.c
@@ -185,6 +185,9 @@ atexit_register(PyObject *module, PyObject *args, PyObject 
*kwargs)
         return NULL;
     }
     PyObject *func_args = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args));
+    if (func_args == NULL) {
+        return NULL;
+    }
     PyObject *func_kwargs = kwargs;
 
     if (func_kwargs == NULL)
@@ -192,6 +195,7 @@ atexit_register(PyObject *module, PyObject *args, PyObject 
*kwargs)
         func_kwargs = Py_None;
     }
     PyObject *callback = PyTuple_Pack(3, func, func_args, func_kwargs);
+    Py_DECREF(func_args);
     if (callback == NULL)
     {
         return NULL;

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to