diff options
author | Damien George <damien.p.george@gmail.com> | 2016-02-01 16:07:21 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-02-01 16:07:21 +0000 |
commit | 93bb7dffd2a655dd8522114ed014077fb6b7ada7 (patch) | |
tree | 12212dce2cfd5904299a1fa5d4b61ca70036e560 | |
parent | 9e677114e4aba8fdb417350a87ce1af33cef127f (diff) | |
download | micropython-93bb7dffd2a655dd8522114ed014077fb6b7ada7.tar.gz micropython-93bb7dffd2a655dd8522114ed014077fb6b7ada7.zip |
py/vm: Fix popping of exception block in UNWIND_JUMP opcode.
Fixes issue #1812.
-rw-r--r-- | py/vm.c | 2 | ||||
-rw-r--r-- | tests/basics/try_continue.py | 13 |
2 files changed, 14 insertions, 1 deletions
@@ -674,7 +674,7 @@ unwind_jump:; exc_sp--; // pop exception handler goto dispatch_loop; // run the exception handler } - exc_sp--; + POP_EXC_BLOCK(); } ip = (const byte*)MP_OBJ_TO_PTR(POP()); // pop destination ip for jump if (unum != 0) { diff --git a/tests/basics/try_continue.py b/tests/basics/try_continue.py new file mode 100644 index 0000000000..4a199b8a38 --- /dev/null +++ b/tests/basics/try_continue.py @@ -0,0 +1,13 @@ +# test continue within exception handler + +def f(): + lst = [1, 2, 3] + for x in lst: + print('a', x) + try: + if x == 2: + raise Exception + except Exception: + continue + print('b', x) +f() |