From dea6ce41b404df35944ab6063c614497b1b2984e Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 24 Aug 2000 06:21:43 +0000 Subject: matz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- array.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'array.c') 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 */ @@ -909,6 +909,14 @@ rb_ary_reverse(ary) return 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); -- cgit v1.2.3