array.c: return first unique element in Array#uniq

* array.c (ary_add_hash): Fix consistency issue between Array#uniq and
  Array#uniq! [Bug #9340] [ruby-core:59457]
* test/ruby/test_array.rb (class TestArray): regression test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tmm1 2014-01-06 19:38:20 +00:00
parent 7dfbcc85d2
commit 3cf4fe47e8
3 changed files with 14 additions and 1 deletions

View file

@ -3908,7 +3908,9 @@ ary_add_hash(VALUE hash, VALUE ary)
for (i=0; i<RARRAY_LEN(ary); i++) {
VALUE elt = RARRAY_AREF(ary, i);
rb_hash_aset(hash, elt, elt);
if (rb_hash_lookup2(hash, elt, Qundef) == Qundef) {
rb_hash_aset(hash, elt, elt);
}
}
return hash;
}