diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-24 06:21:43 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-24 06:21:43 +0000 |
commit | dea6ce41b404df35944ab6063c614497b1b2984e (patch) | |
tree | 154318e243567b27e3f8fae8fd301971d2d68be9 /array.c | |
parent | a85a9d31db29e366cce9efb9c3fab24e750ed498 (diff) | |
download | ruby-dea6ce41b404df35944ab6063c614497b1b2984e.tar.gz |
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.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -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); |