aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2020-09-29 20:33:06 +0900
committernagachika <nagachika@ruby-lang.org>2020-09-29 20:33:06 +0900
commit665589cbdf7bf652067113dd1c0bc49012b990e0 (patch)
tree35912b7727af5e16a539ee6b763dabb0ad15bb19
parentc10326d913a0340fc78ec94dc09d9e9398b31f1c (diff)
downloadruby-665589cbdf7bf652067113dd1c0bc49012b990e0.tar.gz
merge revision(s) df14c758fc705c49c2aaf4c9276a8f7229438fbf: [Backport #17181]
Make hash returned by Hash#transform_values not have a default This sets an explicit default of nil. There is probably a better approach of removing the default. Fixes [Bug #17181]
-rw-r--r--hash.c1
-rw-r--r--test/ruby/test_hash.rb1
-rw-r--r--version.h4
3 files changed, 4 insertions, 2 deletions
diff --git a/hash.c b/hash.c
index 4a3f2ff536..63b228f501 100644
--- a/hash.c
+++ b/hash.c
@@ -3211,6 +3211,7 @@ rb_hash_transform_values(VALUE hash)
RETURN_SIZED_ENUMERATOR(hash, 0, 0, hash_enum_size);
result = hash_copy(hash_alloc(rb_cHash), hash);
+ SET_DEFAULT(result, Qnil);
if (!RHASH_EMPTY_P(hash)) {
rb_hash_stlike_foreach_with_replace(result, transform_values_foreach_func, transform_values_foreach_replace, result);
diff --git a/test/ruby/test_hash.rb b/test/ruby/test_hash.rb
index 738b058ca1..046ea40f5d 100644
--- a/test/ruby/test_hash.rb
+++ b/test/ruby/test_hash.rb
@@ -1673,6 +1673,7 @@ class TestHash < Test::Unit::TestCase
x.default_proc = proc {|h, k| k}
y = x.transform_values {|v| v ** 2 }
assert_nil(y.default_proc)
+ assert_nil(y.default)
y = x.transform_values.with_index {|v, i| "#{v}.#{i}" }
assert_equal(%w(1.0 2.1 3.2), y.values_at(:a, :b, :c))
diff --git a/version.h b/version.h
index d0e742b6e5..41e9b8ff6a 100644
--- a/version.h
+++ b/version.h
@@ -2,11 +2,11 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 1
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 128
+#define RUBY_PATCHLEVEL 129
#define RUBY_RELEASE_YEAR 2020
#define RUBY_RELEASE_MONTH 9
-#define RUBY_RELEASE_DAY 20
+#define RUBY_RELEASE_DAY 29
#include "ruby/version.h"