summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-24 06:21:43 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-24 06:21:43 +0000
commitdea6ce41b404df35944ab6063c614497b1b2984e (patch)
tree154318e243567b27e3f8fae8fd301971d2d68be9 /array.c
parenta85a9d31db29e366cce9efb9c3fab24e750ed498 (diff)
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r--array.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/array.c b/array.c
index 7fc0d5b01d..e3e058fd4b 100644
--- a/array.c
+++ b/array.c
@@ -893,8 +893,8 @@ rb_ary_reverse(ary)
VALUE *p1, *p2;
VALUE tmp;
+ if (RARRAY(ary)->len <= 1) return ary;
rb_ary_modify(ary);
- if (RARRAY(ary)->len == 0) return ary;
p1 = RARRAY(ary)->ptr;
p2 = p1 + RARRAY(ary)->len - 1; /* points last item */
@@ -910,6 +910,14 @@ rb_ary_reverse(ary)
}
static VALUE
+rb_ary_reverse_bang(ary)
+ VALUE ary;
+{
+ if (RARRAY(ary)->len <= 1) return Qnil;
+ return rb_ary_reverse(ary);
+}
+
+static VALUE
rb_ary_reverse_m(ary)
VALUE ary;
{
@@ -965,7 +973,7 @@ rb_ary_sort_bang(ary)
VALUE ary;
{
rb_ary_modify(ary);
- if (RARRAY(ary)->len <= 1) return ary;
+ if (RARRAY(ary)->len <= 1) return Qnil;
FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during sort */
rb_ensure(sort_internal, ary, sort_unlock, ary);
@@ -1625,7 +1633,7 @@ Init_Array()
rb_define_method(rb_cArray, "clone", rb_ary_clone, 0);
rb_define_method(rb_cArray, "join", rb_ary_join_m, -1);
rb_define_method(rb_cArray, "reverse", rb_ary_reverse_m, 0);
- rb_define_method(rb_cArray, "reverse!", rb_ary_reverse, 0);
+ rb_define_method(rb_cArray, "reverse!", rb_ary_reverse_bang, 0);
rb_define_method(rb_cArray, "sort", rb_ary_sort, 0);
rb_define_method(rb_cArray, "sort!", rb_ary_sort_bang, 0);
rb_define_method(rb_cArray, "collect", rb_ary_collect, 0);