From 6710156bd27dd48493d15f515506a0ead5d0328f Mon Sep 17 00:00:00 2001 From: =?utf8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 12 Oct 2025 12:51:44 +0200 Subject: [PATCH] gh-139988: fix a leak when failing to create a Union type (#139990) --- .../2025-10-12-11-00-06.gh-issue-139988.4wi51t.rst | 2 ++ Objects/unionobject.c | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-11-00-06.gh-issue-139988.4wi51t.rst 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 index 000000000000..60fa3b1d339c --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-11-00-06.gh-issue-139988.4wi51t.rst @@ -0,0 +1,2 @@ +Fix a memory leak when failing to create a :class:`~typing.Union` type. +Patch by Bénédikt Tran. diff --git a/Objects/unionobject.c b/Objects/unionobject.c index 2206ed80ef03..c4ece0fe09f0 100644 --- a/Objects/unionobject.c +++ b/Objects/unionobject.c @@ -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; } } -- 2.47.3