summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-05 03:24:54 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-05 03:24:54 +0000
commit90645fd4371abcb63d4fdce7ed75d14fb265125e (patch)
tree9f578f62d3fa2b725c7047173e8010ecf8d6f98c
parent5cf363247595a43e58c919f11c5fc5883871b8a9 (diff)
merge revision(s) 59128: [Backport #13669]
Fix Enumerable#uniq with non single yield arguments * enum.c (uniq_func, uniq_iter): need packed value as the unique key. [ruby-core:81734] [Bug #13669] [Fix GH-1658] Author: Kenichi Kamiya <kachick1@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--enum.c2
-rw-r--r--test/ruby/test_enum.rb1
-rw-r--r--version.h2
3 files changed, 4 insertions, 1 deletions
diff --git a/enum.c b/enum.c
index 5c0634d8d9..1b0e3ade10 100644
--- a/enum.c
+++ b/enum.c
@@ -3847,6 +3847,7 @@ enum_sum(int argc, VALUE* argv, VALUE obj)
static VALUE
uniq_func(RB_BLOCK_CALL_FUNC_ARGLIST(i, hash))
{
+ ENUM_WANT_SVALUE();
rb_hash_add_new_element(hash, i, i);
return Qnil;
}
@@ -3854,6 +3855,7 @@ uniq_func(RB_BLOCK_CALL_FUNC_ARGLIST(i, hash))
static VALUE
uniq_iter(RB_BLOCK_CALL_FUNC_ARGLIST(i, hash))
{
+ ENUM_WANT_SVALUE();
rb_hash_add_new_element(hash, rb_yield_values2(argc, argv), i);
return Qnil;
}
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb
index 51efac5150..468a32a9a1 100644
--- a/test/ruby/test_enum.rb
+++ b/test/ruby/test_enum.rb
@@ -946,5 +946,6 @@ class TestEnumerable < Test::Unit::TestCase
assert_equal([[1896, "Athens"], [1900, "Paris"], [1904, "Chicago"], [1908, "Rome"]],
olympics.uniq{|k,v| v})
assert_equal([1, 2, 3, 4, 5, 10], (1..100).uniq{|x| (x**2) % 10 }.first(6))
+ assert_equal([1, [1, 2]], Foo.new.to_enum.uniq)
end
end
diff --git a/version.h b/version.h
index 188351d07e..351e77b375 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.4.2"
#define RUBY_RELEASE_DATE "2017-08-05"
-#define RUBY_PATCHLEVEL 178
+#define RUBY_PATCHLEVEL 179
#define RUBY_RELEASE_YEAR 2017
#define RUBY_RELEASE_MONTH 8