From 751ac378bdccc3875b4f6b1e8d8ec4ee47263ff4 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 1 Oct 2022 15:18:45 +0900 Subject: [PATCH] codegen.c: should not skip rhs array; fix #5797 When the value of multiple assignment taken, the rhs array needs to be generated anyway. --- mrbgems/mruby-compiler/core/codegen.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index ff85f3a3e..f430cd4cc 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2753,7 +2753,7 @@ codegen(codegen_scope *s, node *tree, int val) node *t = tree->cdr, *p; int rhs = cursp(); - if (nint(t->car) == NODE_ARRAY && t->cdr && nosplat(t->cdr)) { + if (!val && nint(t->car) == NODE_ARRAY && t->cdr && nosplat(t->cdr)) { /* fixed rhs */ t = t->cdr; while (t) { @@ -2820,10 +2820,6 @@ codegen(codegen_scope *s, node *tree, int val) } } pop_n(len); - if (val) { - genop_2(s, OP_ARRAY, rhs, len); - push(); - } } else { /* variable rhs */