From 6b0299f72b23071342d3ab067db1abbf15253102 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 16 May 2016 15:36:36 +0900 Subject: fixed remaining bugs in OP_ASGN stack adjustment; close #3159 --- mrbgems/mruby-compiler/core/codegen.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 37a7cbd0d..48805885f 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1855,15 +1855,16 @@ codegen(codegen_scope *s, node *tree, int val) gen_assignment(s, tree->car, cursp(), val); } else { + if (val) { + genop(s, MKOP_AB(OP_MOVE, vsp, cursp())); + } if (callargs == CALL_MAXARGS) { - genop(s, MKOP_AB(OP_ARYPUSH, cursp()-1, cursp())); - if (val) { - genop(s, MKOP_AB(OP_MOVE, vsp, cursp())); - } pop(); + genop(s, MKOP_AB(OP_ARYPUSH, cursp(), cursp()+1)); } - else if (val) { - genop(s, MKOP_AB(OP_MOVE, vsp, cursp())); + else { + pop_n(callargs); + callargs++; } pop(); idx = new_msym(s, attrsym(s,sym(tree->car->cdr->cdr->car))); -- cgit v1.2.3