diff options
Diffstat (limited to 'py/objgenerator.c')
-rw-r--r-- | py/objgenerator.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/py/objgenerator.c b/py/objgenerator.c index d1bae30de..c3d7f12d7 100644 --- a/py/objgenerator.c +++ b/py/objgenerator.c @@ -135,7 +135,14 @@ STATIC mp_obj_t gen_resume_and_raise(mp_obj_t self_in, mp_obj_t send_value, mp_o return ret; case MP_VM_RETURN_EXCEPTION: - nlr_jump(ret); + // TODO: Optimization of returning MP_OBJ_NULL is really part + // of mp_iternext() protocol, but this function is called by other methods + // too, which may not handled MP_OBJ_NULL. + if (mp_obj_is_subclass_fast(mp_obj_get_type(ret), &mp_type_StopIteration)) { + return MP_OBJ_NULL; + } else { + nlr_jump(ret); + } default: assert(0); |