summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorTakashi Sogabe <[email protected]>2012-10-17 12:55:50 +0900
committerTakashi Sogabe <[email protected]>2012-10-17 12:55:50 +0900
commit8d6f1b04a1f326e3668fd1b2aa0978c2bb38b3ff (patch)
tree56541b56d01be40a3746a0e2cf4a492b5f47afa3 /src
parent265fa03d2c6863bf3425bfe00738ad15d62ba587 (diff)
downloadmruby-8d6f1b04a1f326e3668fd1b2aa0978c2bb38b3ff.tar.gz
mruby-8d6f1b04a1f326e3668fd1b2aa0978c2bb38b3ff.zip
Fix disappearance of a local variable when return statement is called
Commit of #18dd60c causes disappearance of a local variable if return statement is called without arguments. This patch fixes incorrect value of stack pointer. test program: def test_return_cond return if nil obj = 123 p obj p obj.class end test_return_cond output(commit #18dd60c): main Object output(includes this patch): 123 Fixnum
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/codegen.c b/src/codegen.c
index f195c378a..27f217ebe 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1490,6 +1490,7 @@ codegen(codegen_scope *s, node *tree, int val)
else {
genop_peep(s, MKOP_AB(OP_RETURN, cursp(), OP_R_NORMAL), NOVAL);
}
+ push();
break;
case NODE_YIELD: