diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-26 18:59:15 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-26 18:59:15 +0000 |
commit | 688e220d268609ec1a5be7a9b532637fe8c1f765 (patch) | |
tree | 48d8ae8be3bce6eafa66a0829a2934b695688580 /py/vm.c | |
parent | 9c817b9465038e21dc44d2720b5746e8f2f3ce95 (diff) | |
parent | c403076ef8c534836a441374ef0366027946de50 (diff) | |
download | micropython-688e220d268609ec1a5be7a9b532637fe8c1f765.tar.gz micropython-688e220d268609ec1a5be7a9b532637fe8c1f765.zip |
Merge pull request #379 from pfalcon/reraise
vm: Implement raise statement w/o args (reraising last exception).
Diffstat (limited to 'py/vm.c')
-rw-r--r-- | py/vm.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -605,8 +605,14 @@ unwind_return: case MP_BC_RAISE_VARARGS: unum = *ip++; - assert(unum == 1); - obj1 = POP(); + assert(unum <= 1); + if (unum == 0) { + // This assumes that nlr.ret_val holds last raised + // exception and is not overwritten since then. + obj1 = nlr.ret_val; + } else { + obj1 = POP(); + } nlr_jump(rt_make_raise_obj(obj1)); case MP_BC_YIELD_VALUE: |