diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/codegen.c | 3 | ||||
| -rw-r--r-- | src/vm.c | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c index d42a099c8..19a5835fa 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -2146,6 +2146,9 @@ loop_break(codegen_scope *s, node *tree) genop_peep(s, MKOP_A(OP_POPERR, 1), NOVAL); loop = loop->prev; } + while (loop->type == LOOP_RESCUE) { + loop = loop->prev; + } if (loop->type == LOOP_NORMAL) { int tmp; @@ -1134,7 +1134,6 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ci = mrb->ci; break; case OP_R_BREAK: - if (!proc->env) goto NORMAL_RETURN; if (proc->env->cioff < 0) { localjump_error(mrb, "break"); goto L_RAISE; |
