diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-11-11 04:37:42 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-11-11 04:37:42 +0900 |
| commit | 3f002b6993df9ea4843e2479d706e7426d57bb5a (patch) | |
| tree | 6c7087da7fb05be7b7ae51c49c5db523012ef2c0 | |
| parent | 872517dff372ee6fde92c71861abf6ab9fbab958 (diff) | |
| download | mruby-3f002b6993df9ea4843e2479d706e7426d57bb5a.tar.gz mruby-3f002b6993df9ea4843e2479d706e7426d57bb5a.zip | |
fixed a bug when number of LHS and RHS differs; fix #3239
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 14 |
1 files changed, 12 insertions, 2 deletions
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; } } |
