summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-20 04:27:32 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-20 04:27:32 +0000
commit9ce419a45c521d8c41773ad29cb9ccec3be05028 (patch)
tree22a94afde9b375588a2d0d9aef267690e6f2d5b6 /array.c
parentc9dd4823d98141754842c0b356b141d94ba36604 (diff)
* array.c (rb_ary_uniq_bang): the array is already unique if the
length is zero or one. (rb_ary_uniq): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r--array.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/array.c b/array.c
index 138b3cfdb9..744d1e0491 100644
--- a/array.c
+++ b/array.c
@@ -3367,6 +3367,8 @@ rb_ary_uniq_bang(VALUE ary)
long i, j;
rb_ary_modify_check(ary);
+ if (RARRAY_LEN(ary) <= 1)
+ return Qnil;
if (rb_block_given_p()) {
hash = ary_make_hash_by(ary);
if (RARRAY_LEN(ary) == (i = RHASH_SIZE(hash))) {
@@ -3412,6 +3414,8 @@ rb_ary_uniq(VALUE ary)
VALUE hash, uniq, v;
long i;
+ if (RARRAY_LEN(ary) <= 1)
+ return rb_ary_dup(ary);
if (rb_block_given_p()) {
hash = ary_make_hash_by(ary);
uniq = ary_new(rb_obj_class(ary), RHASH_SIZE(hash));