summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler/core/codegen.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-08-19 11:56:04 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-08-19 11:56:04 +0900
commit834523945e9a74d1b23c6d792b1770195636af42 (patch)
tree03408e5644b0c687aed423934d35fd9497cbf5a5 /mrbgems/mruby-compiler/core/codegen.c
parentdb098d3e0ef05372f6f08cdc3332790f0f65dcf1 (diff)
downloadmruby-834523945e9a74d1b23c6d792b1770195636af42.tar.gz
mruby-834523945e9a74d1b23c6d792b1770195636af42.zip
Replace stack `pop()` by `push_n(2); pop_n(3)`; fix #3783
To calculate correct register windows size. The fix was suggested by Christopher Aue.
Diffstat (limited to 'mrbgems/mruby-compiler/core/codegen.c')
-rw-r--r--mrbgems/mruby-compiler/core/codegen.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c
index 92ea95257..c63533fef 100644
--- a/mrbgems/mruby-compiler/core/codegen.c
+++ b/mrbgems/mruby-compiler/core/codegen.c
@@ -1320,7 +1320,7 @@ 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));
- pop();
+ push_n(2); pop_n(3);
genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern_lit(s->mrb, "__case_eqq")), 1));
}
else {