From 68e71eacb8f5e67f9765ccd8639ca359bc3417de Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 25 May 2017 20:35:57 +1000 Subject: [PATCH] py/vm: Fix bug with stackless mode and unwinding of exceptions. This patch fixes a regression introduced by 71a3d6ec3bd02c5bd13334537e1bd146bb643bad Previous to this patch the n_state variable was referring to that computed at the very start of the mp_execute_bytecode function. This patch fixes it so that n_state is recomputed when the code_state changes. --- py/vm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/py/vm.c b/py/vm.c index 469528df4..9704bc15a 100644 --- a/py/vm.c +++ b/py/vm.c @@ -1436,6 +1436,7 @@ unwind_loop: } else if (code_state->prev != NULL) { mp_globals_set(code_state->old_globals); code_state = code_state->prev; + size_t n_state = mp_decode_uint_value(code_state->fun_bc->bytecode); fastn = &code_state->state[n_state - 1]; exc_stack = (mp_exc_stack_t*)(code_state->state + n_state); // variables that are visible to the exception handler (declared volatile)