aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--array.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 3bc5e71194..f7b0032fa0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Nov 6 21:16:51 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_shift_m): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
+
Wed Nov 6 21:05:20 2013 Masaki Matsushita <glass.saga@gmail.com>
* array.c (rb_ary_reverse): use RARRAY_PTR_USE().
diff --git a/array.c b/array.c
index 2a85772c97..f1919fd1fe 100644
--- a/array.c
+++ b/array.c
@@ -1070,7 +1070,9 @@ rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
ARY_INCREASE_PTR(ary, n);
}
else {
- MEMMOVE(RARRAY_PTR(ary), RARRAY_PTR(ary)+n, VALUE, RARRAY_LEN(ary)-n);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr + n, VALUE, RARRAY_LEN(ary)-n);
+ }); /* WB: no new reference */
}
ARY_INCREASE_LEN(ary, -n);