diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-08-30 00:15:16 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-08-30 00:29:35 +0900 |
| commit | 2c93e4a0a816d9c0d547a27b9f09fa61a2497d95 (patch) | |
| tree | 0a7110a3220b8d6d42e11ae91dd2b4db93c6dfc1 | |
| parent | f76cc483d55b58f2b5803b13cb5e528a67b39c3b (diff) | |
| download | mruby-2c93e4a0a816d9c0d547a27b9f09fa61a2497d95.tar.gz mruby-2c93e4a0a816d9c0d547a27b9f09fa61a2497d95.zip | |
The operand of `OP_ARYDUP` may not be an array; fix #4094
This commit also fix #4096.
| -rw-r--r-- | src/vm.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -2618,7 +2618,12 @@ RETRY_TRY_BLOCK: CASE(OP_ARYDUP, B) { mrb_value ary = regs[a]; - ary = mrb_ary_new_from_values(mrb, RARRAY_LEN(ary), RARRAY_PTR(ary)); + if (mrb_array_p(ary)) { + ary = mrb_ary_new_from_values(mrb, RARRAY_LEN(ary), RARRAY_PTR(ary)); + } + else { + ary = mrb_ary_new_from_values(mrb, 1, &ary); + } regs[a] = ary; NEXT; } |
