diff options
| -rw-r--r-- | src/codegen.c | 12 | ||||
| -rw-r--r-- | src/mruby_core.rake | 2 | ||||
| -rw-r--r-- | tasks/libmruby.rake | 2 |
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 |
