]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-139988: fix a leak when failing to create a Union type (GH-139990) (#139993)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 12 Oct 2025 11:16:43 +0000 (13:16 +0200)
committerGitHub <noreply@github.com>
Sun, 12 Oct 2025 11:16:43 +0000 (11:16 +0000)
gh-139988: fix a leak when failing to create a Union type (GH-139990)
(cherry picked from commit 6710156bd27dd48493d15f515506a0ead5d0328f)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-11-00-06.gh-issue-139988.4wi51t.rst [new file with mode: 0644]
Objects/unionobject.c

diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-11-00-06.gh-issue-139988.4wi51t.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-11-00-06.gh-issue-139988.4wi51t.rst
new file mode 100644 (file)
index 0000000..60fa3b1
--- /dev/null
@@ -0,0 +1,2 @@
+Fix a memory leak when failing to create a :class:`~typing.Union` type.
+Patch by Bénédikt Tran.
index 2206ed80ef03fdfdf301d1b0ff177dc84a06004e..c4ece0fe09f01854bc5494568203179f4061347c 100644 (file)
@@ -474,11 +474,13 @@ _Py_union_from_tuple(PyObject *args)
     }
     if (PyTuple_CheckExact(args)) {
         if (!unionbuilder_add_tuple(&ub, args)) {
+            unionbuilder_finalize(&ub);
             return NULL;
         }
     }
     else {
         if (!unionbuilder_add_single(&ub, args)) {
+            unionbuilder_finalize(&ub);
             return NULL;
         }
     }