From 2c93e4a0a816d9c0d547a27b9f09fa61a2497d95 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 30 Aug 2018 00:15:16 +0900 Subject: The operand of `OP_ARYDUP` may not be an array; fix #4094 This commit also fix #4096. --- src/vm.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index 2fd1e5efa..c8088d22e 100644 --- a/src/vm.c +++ b/src/vm.c @@ -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; } -- cgit v1.2.3