diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2015-05-11 02:59:25 +0300 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-05-11 23:57:42 +0100 |
commit | aa9dbb1b033a8163e07fcf5763fc20146354cc48 (patch) | |
tree | a4af134f2150987b2536ba7944e1252091aa074e /py/objgenerator.c | |
parent | 5df81de7afbf4e9f24413ba957f4a7cce89fa1e0 (diff) | |
download | micropython-aa9dbb1b033a8163e07fcf5763fc20146354cc48.tar.gz micropython-aa9dbb1b033a8163e07fcf5763fc20146354cc48.zip |
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".
Diffstat (limited to 'py/objgenerator.c')
-rw-r--r-- | py/objgenerator.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/py/objgenerator.c b/py/objgenerator.c index 3bf29732e2..0f0f84249b 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: |