summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorKouhei Sutou <[email protected]>2015-02-24 00:21:49 +0900
committerKouhei Sutou <[email protected]>2015-02-24 20:53:12 +0900
commit4b4ddd5a28b74ce6add69667d542aaa3f3dfa38c (patch)
tree3f7b782081a8ace63a854b4d68485d31ca439130 /src/codegen.c
parent68f60714dc54f0b040243428822213f5f1c0fc2b (diff)
downloadmruby-4b4ddd5a28b74ce6add69667d542aaa3f3dfa38c.tar.gz
mruby-4b4ddd5a28b74ce6add69667d542aaa3f3dfa38c.zip
Fix a bug that no expression case doesn't return valid value
Here is a script that reproduces this problem: x = case when true; 1 end p x # => main # 1 is expected
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 1fe26355f..c8f964f56 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1458,7 +1458,7 @@ codegen(codegen_scope *s, node *tree, int val)
int pos = cursp();
genop(s, MKOP_A(OP_LOADNIL, cursp()));
if (pos3) dispatch_linked(s, pos3);
- pop();
+ if (head) pop();
genop(s, MKOP_AB(OP_MOVE, cursp(), pos));
push();
}