From aa9dbb1b033a8163e07fcf5763fc20146354cc48 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky <pfalcon@users.sourceforge.net> Date: Mon, 11 May 2015 02:59:25 +0300 Subject: [PATCH] objgenerator: If generator yielded STOP_ITERATION value, it's stopped. MP_OBJ_STOP_ITERATION is equivalent of raising StopIteration, except mp_vm_return_kind_t for it is "yield". --- py/objgenerator.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/py/objgenerator.c b/py/objgenerator.c index 3bf29732e..0f0f84249 100644 --- a/py/objgenerator.c +++ b/py/objgenerator.c @@ -134,6 +134,9 @@ mp_vm_return_kind_t mp_obj_gen_resume(mp_obj_t self_in, mp_obj_t send_value, mp_ case MP_VM_RETURN_YIELD: *ret_val = *self->code_state.sp; + if (*ret_val == MP_OBJ_STOP_ITERATION) { + self->code_state.ip = 0; + } break; case MP_VM_RETURN_EXCEPTION: -- GitLab