[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]