From 54905e98cfeb9fcce3a79a3c3b86cc11e659dd42 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 18 Apr 2018 17:30:33 +0900 Subject: `ary_dup()` should not use `ary_replace(); fix #4004 Otherwise the duplicated object may have shared entities that should not be modified in-line. --- src/array.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src') diff --git a/src/array.c b/src/array.c index e039ba3b1..bfa6e5f06 100644 --- a/src/array.c +++ b/src/array.c @@ -684,11 +684,7 @@ mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val) static struct RArray* ary_dup(mrb_state *mrb, struct RArray *a) { - mrb_int len = ARY_LEN(a); - struct RArray *d = ary_new_capa(mrb, len); - - ary_replace(mrb, d, a); - return d; + return ary_new_from_values(mrb, ARY_LEN(a), ARY_PTR(a)); } MRB_API mrb_value -- cgit v1.2.3