summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMasamitsu MURASE <[email protected]>2013-02-25 00:20:10 +0900
committerMasamitsu MURASE <[email protected]>2013-02-25 00:20:10 +0900
commitc6d2cde148d54fd1489eb3589a10d07753c701a7 (patch)
treef61a94d7282f7059d453280c22551d97a2cd9704 /src
parentbbd50cca2f78c642517beaeccd26400798b1ec46 (diff)
downloadmruby-c6d2cde148d54fd1489eb3589a10d07753c701a7.tar.gz
mruby-c6d2cde148d54fd1489eb3589a10d07753c701a7.zip
Adjust stack position of NODE_RESCUE.
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 86d61fecf..d3239259b 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1083,6 +1083,7 @@ codegen(codegen_scope *s, node *tree, int val)
}
if (n3->cdr->cdr->car) {
codegen(s, n3->cdr->cdr->car, val);
+ if (val) pop();
}
tmp = new_label(s);
genop(s, MKOP_sBx(OP_JMP, exend));
@@ -1102,6 +1103,9 @@ codegen(codegen_scope *s, node *tree, int val)
if (tree->car) {
codegen(s, tree->car, val);
}
+ else if (val) {
+ push();
+ }
dispatch_linked(s, exend);
loop_pop(s, NOVAL);
}