diff options
| author | Christopher Aue <[email protected]> | 2017-08-22 14:50:40 +0200 |
|---|---|---|
| committer | Christopher Aue <[email protected]> | 2017-08-23 18:15:08 +0200 |
| commit | c040c8d92bc940cd6f7b451c9f8968df5d21c945 (patch) | |
| tree | 935dac8193276291324570612d4f9887fae407d8 /mrbgems/mruby-compiler/core | |
| parent | c6596cf26a125e9759e01425bea8782ff58dbf4f (diff) | |
| download | mruby-c040c8d92bc940cd6f7b451c9f8968df5d21c945.tar.gz mruby-c040c8d92bc940cd6f7b451c9f8968df5d21c945.zip | |
Tested register windows of OP_SENDs generated by NODE_{RESCUE,HASH,ALIAS}; ref #3783
Diffstat (limited to 'mrbgems/mruby-compiler/core')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 167ceb3cb..9586ade52 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1320,7 +1320,8 @@ codegen(codegen_scope *s, node *tree, int val) if (n4 && n4->car && nint(n4->car->car) == NODE_SPLAT) { codegen(s, n4->car, VAL); genop(s, MKOP_AB(OP_MOVE, cursp(), exc)); - push_n(2); pop_n(3); + push_n(2); pop_n(2); /* space for one arg and a block */ + pop(); genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern_lit(s->mrb, "__case_eqq")), 1)); } else { @@ -2607,7 +2608,7 @@ codegen(codegen_scope *s, node *tree, int val) genop(s, MKOP_ABx(OP_LOADSYM, cursp(), b)); push(); genop(s, MKOP_A(OP_LOADNIL, cursp())); - push(); + push(); /* space for a block */ pop_n(4); genop(s, MKOP_ABC(OP_SEND, cursp(), c, 2)); if (val) { |
