ruby-changes:20762
From: nobu <ko1@a...>
Date: Tue, 2 Aug 2011 12:03:29 +0900 (JST)
Subject: [ruby-changes:20762] nobu:r32810 (trunk, ruby_1_9_3): * hash.c (recursive_hash): hash value of emptied hash should be
nobu 2011-08-02 12:03:18 +0900 (Tue, 02 Aug 2011) New Revision: 32810 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32810 Log: * hash.c (recursive_hash): hash value of emptied hash should be equal to an empty hash. [ruby-core:38650] Modified files: branches/ruby_1_9_3/ChangeLog branches/ruby_1_9_3/hash.c branches/ruby_1_9_3/test/ruby/test_hash.rb trunk/ChangeLog trunk/hash.c trunk/test/ruby/test_hash.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 32809) +++ ChangeLog (revision 32810) @@ -1,3 +1,8 @@ +Tue Aug 2 12:03:16 2011 Nobuyoshi Nakada <nobu@r...> + + * hash.c (recursive_hash): hash value of emptied hash should be + equal to an empty hash. [ruby-core:38650] + Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@r...> * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136] Index: hash.c =================================================================== --- hash.c (revision 32809) +++ hash.c (revision 32810) @@ -1685,6 +1685,7 @@ if (!RHASH(hash)->ntbl) return LONG2FIX(0); hval = RHASH(hash)->ntbl->num_entries; + if (!hval) return LONG2FIX(0); if (recur) hval = rb_hash_uint(rb_hash_start(rb_hash(rb_cHash)), hval); else Index: test/ruby/test_hash.rb =================================================================== --- test/ruby/test_hash.rb (revision 32809) +++ test/ruby/test_hash.rb (revision 32810) @@ -809,6 +809,9 @@ def test_hash2 assert_kind_of(Integer, {}.hash) + h = {1=>2} + h.shift + assert_equal({}.hash, h.hash, '[ruby-core:38650]') end def test_update2 Index: ruby_1_9_3/ChangeLog =================================================================== --- ruby_1_9_3/ChangeLog (revision 32809) +++ ruby_1_9_3/ChangeLog (revision 32810) @@ -1,3 +1,8 @@ +Tue Aug 2 12:03:16 2011 Nobuyoshi Nakada <nobu@r...> + + * hash.c (recursive_hash): hash value of emptied hash should be + equal to an empty hash. [ruby-core:38650] + Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@r...> * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136] Index: ruby_1_9_3/hash.c =================================================================== --- ruby_1_9_3/hash.c (revision 32809) +++ ruby_1_9_3/hash.c (revision 32810) @@ -1685,6 +1685,7 @@ if (!RHASH(hash)->ntbl) return LONG2FIX(0); hval = RHASH(hash)->ntbl->num_entries; + if (!hval) return LONG2FIX(0); if (recur) hval = rb_hash_uint(rb_hash_start(rb_hash(rb_cHash)), hval); else Index: ruby_1_9_3/test/ruby/test_hash.rb =================================================================== --- ruby_1_9_3/test/ruby/test_hash.rb (revision 32809) +++ ruby_1_9_3/test/ruby/test_hash.rb (revision 32810) @@ -809,6 +809,9 @@ def test_hash2 assert_kind_of(Integer, {}.hash) + h = {1=>2} + h.shift + assert_equal({}.hash, h.hash, '[ruby-core:38650]') end def test_update2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/