diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/codegen.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/codegen.c b/src/codegen.c index 2482209cc..1f087b2cd 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -267,6 +267,8 @@ genop_peep(codegen_scope *s, mrb_code i, int val) break; case OP_RETURN: switch (c0) { + case OP_RETURN: + return; case OP_MOVE: s->iseq[s->pc-1] = MKOP_AB(OP_RETURN, GETARG_B(i0), OP_R_NORMAL); return; @@ -972,6 +974,7 @@ codegen(codegen_scope *s, node *tree, int val) lp->pc1 = onerr; if (tree->car) { codegen(s, tree->car, val); + if (val) pop(); } lp->type = LOOP_RESCUE; noexc = new_label(s); |
