diff --git a/src/vm.c b/src/vm.c index 6e2b65a5d5..1b94ee5e11 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1432,15 +1432,13 @@ mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *pc) }; #endif - volatile mrb_bool exc_caught = FALSE; RETRY_TRY_BLOCK: MRB_TRY(&c_jmp) { - if (exc_caught) { - exc_caught = FALSE; + if (mrb->exc) { mrb_gc_arena_restore(mrb, ai); - if (mrb->exc && mrb->exc->tt == MRB_TT_BREAK) + if (mrb->exc->tt == MRB_TT_BREAK) goto L_BREAK; goto L_RAISE; } @@ -3130,7 +3128,6 @@ mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *pc) while (ci > mrb->c->cibase && ci->cci == CINFO_DIRECT) { ci = cipop(mrb); } - exc_caught = TRUE; pc = ci->pc; goto RETRY_TRY_BLOCK; }