summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c3
-rw-r--r--src/vm.c1
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;
diff --git a/src/vm.c b/src/vm.c
index 14efb38f8..a779565be 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -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;