diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-04-17 12:33:01 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-04-17 12:33:01 +0900 |
| commit | c078783a5aabea571a42961b615d957072e5fb85 (patch) | |
| tree | d5f9b37b5abfcf38bdf78cad7170a96e1b5a626c /src | |
| parent | 66b1695ba9f78889d78a2836a9afe1ffe04b3ac0 (diff) | |
| download | mruby-c078783a5aabea571a42961b615d957072e5fb85.tar.gz mruby-c078783a5aabea571a42961b615d957072e5fb85.zip | |
Make `ary_replace()` to take `struct RArray*` argument.
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 10 |
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; } |
