diff options
Diffstat (limited to 'Python/ceval.c')
-rw-r--r-- | Python/ceval.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 1a72413c9e..14603d3300 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1944,6 +1944,26 @@ main_loop: } } + TARGET(END_ASYNC_FOR) { + PyObject *exc = POP(); + assert(PyExceptionClass_Check(exc)); + if (PyErr_GivenExceptionMatches(exc, PyExc_StopAsyncIteration)) { + PyTryBlock *b = PyFrame_BlockPop(f); + assert(b->b_type == EXCEPT_HANDLER); + Py_DECREF(exc); + UNWIND_EXCEPT_HANDLER(b); + Py_DECREF(POP()); + JUMPBY(oparg); + FAST_DISPATCH(); + } + else { + PyObject *val = POP(); + PyObject *tb = POP(); + PyErr_Restore(exc, val, tb); + goto exception_unwind; + } + } + TARGET(LOAD_BUILD_CLASS) { _Py_IDENTIFIER(__build_class__); |