diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-10-20 03:30:58 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-10-20 03:30:58 +0900 |
| commit | da637cac4a3520f7d6d9a69b392be4309f36ef5b (patch) | |
| tree | 234f5f983be59645d1446f233910c471605bc554 /src | |
| parent | b4f6f964b424589fc0c9a3d695290695716d4ebe (diff) | |
| download | mruby-da637cac4a3520f7d6d9a69b392be4309f36ef5b.tar.gz mruby-da637cac4a3520f7d6d9a69b392be4309f36ef5b.zip | |
should handle break in rescue
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; |
