ruby-changes:45985
From: nagachika <ko1@a...>
Date: Wed, 22 Mar 2017 22:46:17 +0900 (JST)
Subject: [ruby-changes:45985] nagachika:r58056 (ruby_2_3): merge revision(s) 57024: [Backport #13015]
nagachika 2017-03-22 22:46:12 +0900 (Wed, 22 Mar 2017) New Revision: 58056 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=58056 Log: merge revision(s) 57024: [Backport #13015] vm.c: check type of hash to merge * vm.c (core_hash_merge): check the type of the target hash to merge. [ruby-core:78536] [Bug #13015] Modified directories: branches/ruby_2_3/ Modified files: branches/ruby_2_3/test/ruby/test_keyword.rb branches/ruby_2_3/version.h branches/ruby_2_3/vm.c Index: ruby_2_3/test/ruby/test_keyword.rb =================================================================== --- ruby_2_3/test/ruby/test_keyword.rb (revision 58055) +++ ruby_2_3/test/ruby/test_keyword.rb (revision 58056) @@ -604,4 +604,24 @@ class TestKeywordArguments < Test::Unit: https://github.com/ruby/ruby/blob/trunk/ruby_2_3/test/ruby/test_keyword.rb#L604 assert_equal({x: 1, y: 2, **h}, obj.foo) } end + + def test_kwrest_overwritten + bug13015 = '[ruby-core:78536] [Bug #13015]' + + klass = EnvUtil.labeled_class("Parent") do + def initialize(d:) + end + end + + klass = EnvUtil.labeled_class("Child", klass) do + def initialize(d:, **h) + h = [2, 3] + super + end + end + + assert_raise_with_message(TypeError, /expected Hash/, bug13015) do + klass.new(d: 4) + end + end end Index: ruby_2_3/version.h =================================================================== --- ruby_2_3/version.h (revision 58055) +++ ruby_2_3/version.h (revision 58056) @@ -1,10 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/version.h#L1 #define RUBY_VERSION "2.3.3" -#define RUBY_RELEASE_DATE "2017-03-20" -#define RUBY_PATCHLEVEL 255 +#define RUBY_RELEASE_DATE "2017-03-22" +#define RUBY_PATCHLEVEL 256 #define RUBY_RELEASE_YEAR 2017 #define RUBY_RELEASE_MONTH 3 -#define RUBY_RELEASE_DAY 20 +#define RUBY_RELEASE_DAY 22 #include "ruby/version.h" Index: ruby_2_3/vm.c =================================================================== --- ruby_2_3/vm.c (revision 58055) +++ ruby_2_3/vm.c (revision 58056) @@ -2529,6 +2529,7 @@ core_hash_merge(VALUE hash, long argc, c https://github.com/ruby/ruby/blob/trunk/ruby_2_3/vm.c#L2529 { long i; + Check_Type(hash, T_HASH); VM_ASSERT(argc % 2 == 0); for (i=0; i<argc; i+=2) { rb_hash_aset(hash, argv[i], argv[i+1]); @@ -2549,7 +2550,7 @@ core_hash_from_ary(VALUE ary) https://github.com/ruby/ruby/blob/trunk/ruby_2_3/vm.c#L2550 { VALUE hash = rb_hash_new(); - RUBY_DTRACE_CREATE_HOOK(HASH, RARRAY_LEN(ary)); + RUBY_DTRACE_CREATE_HOOK(HASH, (Check_Type(ary, T_ARRAY), RARRAY_LEN(ary))); return core_hash_merge_ary(hash, ary); } @@ -2563,6 +2564,7 @@ m_core_hash_merge_ary(VALUE self, VALUE https://github.com/ruby/ruby/blob/trunk/ruby_2_3/vm.c#L2564 static VALUE core_hash_merge_ary(VALUE hash, VALUE ary) { + Check_Type(ary, T_ARRAY); core_hash_merge(hash, RARRAY_LEN(ary), RARRAY_CONST_PTR(ary)); return hash; } Property changes on: ruby_2_3 ___________________________________________________________________ Modified: svn:mergeinfo Merged /trunk:r57024 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/