summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-04-17 12:33:01 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-04-17 12:33:01 +0900
commitc078783a5aabea571a42961b615d957072e5fb85 (patch)
treed5f9b37b5abfcf38bdf78cad7170a96e1b5a626c /src
parent66b1695ba9f78889d78a2836a9afe1ffe04b3ac0 (diff)
downloadmruby-c078783a5aabea571a42961b615d957072e5fb85.tar.gz
mruby-c078783a5aabea571a42961b615d957072e5fb85.zip
Make `ary_replace()` to take `struct RArray*` argument.
Diffstat (limited to 'src')
-rw-r--r--src/array.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/array.c b/src/array.c
index f5c3d3246..270193e09 100644
--- a/src/array.c
+++ b/src/array.c
@@ -344,12 +344,14 @@ mrb_ary_plus(mrb_state *mrb, mrb_value self)
}
static void
-ary_replace(mrb_state *mrb, struct RArray *a, mrb_value *argv, mrb_int len)
+ary_replace(mrb_state *mrb, struct RArray *a, struct RArray *b)
{
+ mrb_int len = ARY_LEN(b);
+
ary_modify(mrb, a);
if (ARY_CAPA(a) < len)
ary_expand_capa(mrb, a, len);
- array_copy(ARY_PTR(a), argv, len);
+ array_copy(ARY_PTR(a), ARY_PTR(b), len);
mrb_write_barrier(mrb, (struct RBasic*)a);
ARY_SET_LEN(a, len);
}
@@ -361,7 +363,7 @@ mrb_ary_replace(mrb_state *mrb, mrb_value self, mrb_value other)
struct RArray *a2 = mrb_ary_ptr(other);
if (a1 != a2) {
- ary_replace(mrb, a1, ARY_PTR(a2), ARY_LEN(a2));
+ ary_replace(mrb, a1, a2);
}
}
@@ -645,7 +647,7 @@ 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, ARY_PTR(a), len);
+ ary_replace(mrb, d, a);
return d;
}