diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-04-18 17:30:33 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-04-18 17:30:33 +0900 |
| commit | 54905e98cfeb9fcce3a79a3c3b86cc11e659dd42 (patch) | |
| tree | aa2ea61f3bd9d134e6e321464f0eb1a0f06e4fe5 /src | |
| parent | 391e24210fdfb3c80c86b10c1421c984ac715a13 (diff) | |
| download | mruby-54905e98cfeb9fcce3a79a3c3b86cc11e659dd42.tar.gz mruby-54905e98cfeb9fcce3a79a3c3b86cc11e659dd42.zip | |
`ary_dup()` should not use `ary_replace(); fix #4004
Otherwise the duplicated object may have shared entities that
should not be modified in-line.
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 6 |
1 files changed, 1 insertions, 5 deletions
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 |
