summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorKouhei Sutou <[email protected]>2015-02-24 00:16:41 +0900
committerKouhei Sutou <[email protected]>2015-02-24 00:16:41 +0900
commit584d6de3c29cb2cfef79ff17ac12f17ace000391 (patch)
treed8397db42679b69c22f707d9dca0e611c422d227 /src
parent44d8a40bac9b900b754bc78167939a74d5efd2d0 (diff)
downloadmruby-584d6de3c29cb2cfef79ff17ac12f17ace000391.tar.gz
mruby-584d6de3c29cb2cfef79ff17ac12f17ace000391.zip
Fix a bug that if and no return value case can't return true clause value
Here is a script that reproduce this problem: x = if true 1 else case 2 when 3 end 4 end p x # => nil # 1 is expected
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 46d457885..1fe26355f 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1462,8 +1462,13 @@ codegen(codegen_scope *s, node *tree, int val)
genop(s, MKOP_AB(OP_MOVE, cursp(), pos));
push();
}
- else if (pos3) {
- dispatch_linked(s, pos3);
+ else {
+ if (pos3) {
+ dispatch_linked(s, pos3);
+ }
+ if (head) {
+ pop();
+ }
}
}
break;