diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-10-20-00-00-00.gh-issue-159739.a3cc5d.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-10-20-00-00-00.gh-issue-159739.a3cc5d.rst new file mode 100644 index 00000000000000..69c53e84e216b3 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-10-20-00-00-00.gh-issue-159739.a3cc5d.rst @@ -0,0 +1 @@ +Fix a crash when constructing an error for invalid generic alias arguments. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index ddee7957178f48..5649866cc50234 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -546,13 +546,13 @@ _Py_subs_parameters(PyObject *self, PyObject *args, PyObject *parameters, PyObje } if (unpack) { if (!PyTuple_Check(arg)) { - Py_DECREF(newargs); - Py_DECREF(item); - Py_XDECREF(tuple_args); PyObject *original = PyTuple_GET_ITEM(args, iarg); PyErr_Format(PyExc_TypeError, "expected __typing_subst__ of %T objects to return a tuple, not %T", original, arg); + Py_DECREF(newargs); + Py_DECREF(item); + Py_XDECREF(tuple_args); Py_DECREF(arg); return NULL; }