From 1142cf20370362ab2b974b235e7606246245ce23 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 8 Nov 2016 22:18:41 +0900 Subject: fixed a bug with [] in RHS of multiple assignments; fix #3236 --- mrbgems/mruby-compiler/core/codegen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mrbgems/mruby-compiler/core/codegen.c') diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index efdd77888..c898acddc 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1645,7 +1645,7 @@ codegen(codegen_scope *s, node *tree, int val) node *t = tree->cdr, *p; int rhs = cursp(); - if ((intptr_t)t->car == NODE_ARRAY && nosplat(t->cdr)) { + if ((intptr_t)t->car == NODE_ARRAY && t->cdr && nosplat(t->cdr)) { /* fixed rhs */ t = t->cdr; while (t) { -- cgit v1.2.3 From 3f002b6993df9ea4843e2479d706e7426d57bb5a Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 11 Nov 2016 04:37:42 +0900 Subject: fixed a bug when number of LHS and RHS differs; fix #3239 --- mrbgems/mruby-compiler/core/codegen.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'mrbgems/mruby-compiler/core/codegen.c') diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index c898acddc..9b064b867 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1655,11 +1655,21 @@ codegen(codegen_scope *s, node *tree, int val) } tree = tree->car; if (tree->car) { /* pre */ + int first = TRUE; t = tree->car; n = 0; while (t) { - gen_assignment(s, t->car, rhs+n, NOVAL); - n++; + if (n < len) { + gen_assignment(s, t->car, rhs+n, NOVAL); + n++; + } + else { + if (first) { + genop(s, MKOP_A(OP_LOADNIL, rhs+n)); + first = FALSE; + } + gen_assignment(s, t->car, rhs+n, NOVAL); + } t = t->cdr; } } -- cgit v1.2.3