summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/codegen.c12
-rw-r--r--src/mruby_core.rake2
-rw-r--r--tasks/libmruby.rake2
3 files changed, 11 insertions, 5 deletions
diff --git a/src/codegen.c b/src/codegen.c
index c1a62320d..246101f24 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1106,18 +1106,24 @@ codegen(codegen_scope *s, node *tree, int val)
if (e) {
if (val) pop();
pos2 = new_label(s);
- genop(s, MKOP_sBx(OP_JMP, 0));
- dispatch(s, pos1);
+ genop(s, MKOP_sBx(OP_JMP, 0));
+ dispatch(s, pos1);
codegen(s, e, val);
dispatch(s, pos2);
}
else {
if (val) {
pop();
+ pos2 = new_label(s);
+ genop(s, MKOP_sBx(OP_JMP, 0));
+ dispatch(s, pos1);
genop(s, MKOP_A(OP_LOADNIL, cursp()));
+ dispatch(s, pos2);
push();
}
- dispatch(s, pos1);
+ else {
+ dispatch(s, pos1);
+ }
}
}
break;
diff --git a/src/mruby_core.rake b/src/mruby_core.rake
index bc84ed6d9..7db1dbf77 100644
--- a/src/mruby_core.rake
+++ b/src/mruby_core.rake
@@ -6,7 +6,7 @@ MRuby.each_target do
self.libmruby << objs
file "#{build_dir}/lib/libmruby_core.a" => objs do |t|
- archive t.name, 'r', t.prerequisites
+ archive t.name, 'rs', t.prerequisites
end
# Parser
diff --git a/tasks/libmruby.rake b/tasks/libmruby.rake
index 1c68aa5e4..9f5cc555a 100644
--- a/tasks/libmruby.rake
+++ b/tasks/libmruby.rake
@@ -1,5 +1,5 @@
MRuby.each_target do
file "#{build_dir}/lib/libmruby.a" => libmruby.flatten do |t|
- archive t.name, 'r', t.prerequisites
+ archive t.name, 'rs', t.prerequisites
end
end