From 1371295e678f00a7c89dc5bb2ab61ede9adbc094 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Tue, 5 Nov 2024 04:56:36 -0500 Subject: gh-126366: Fix crash if `__iter__` raises an exception during `yield from` (#126369) --- Python/bytecodes.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Python/bytecodes.c') diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 81b527e8c05..8c52db6ab68 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -2811,11 +2811,12 @@ dummy_func( } else { /* `iterable` is not a generator. */ - iter = PyStackRef_FromPyObjectSteal(PyObject_GetIter(iterable_o)); + PyObject *iter_o = PyObject_GetIter(iterable_o); DEAD(iterable); - if (PyStackRef_IsNull(iter)) { + if (iter_o == NULL) { ERROR_NO_POP(); } + iter = PyStackRef_FromPyObjectSteal(iter_o); DECREF_INPUTS(); } } -- cgit v1.2.3