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

ruby-changes:39532

From: usa <ko1@a...>
Date: Mon, 17 Aug 2015 17:53:05 +0900 (JST)
Subject: [ruby-changes:39532] usa:r51613 (ruby_2_1): merge revision(s) 51423, 51425: [Backport #9381]

usa	2015-08-17 17:52:39 +0900 (Mon, 17 Aug 2015)

  New Revision: 51613

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51613

  Log:
    merge revision(s) 51423,51425: [Backport #9381]
    
    test_hash.rb: add assertions
    
    * test/ruby/test_hash.rb (test_wrapper_of_special_const): test
      other special obejcts.  [Bug #9381]
    * hash.c (rb_any_hash): fix Float hash.  rb_dbl_hash() returns a
      Fixnum, but not a long.  [Bug #9381]

  Modified directories:
    branches/ruby_2_1/
  Modified files:
    branches/ruby_2_1/ChangeLog
    branches/ruby_2_1/hash.c
    branches/ruby_2_1/test/ruby/test_hash.rb
    branches/ruby_2_1/version.h
Index: ruby_2_1/ChangeLog
===================================================================
--- ruby_2_1/ChangeLog	(revision 51612)
+++ ruby_2_1/ChangeLog	(revision 51613)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/ChangeLog#L1
+Mon Aug 17 17:52:11 2015  Nobuyoshi Nakada  <nobu@r...>
+
+	* hash.c (rb_any_hash): fix Float hash.  rb_dbl_hash() returns a
+	  Fixnum, but not a long.  [Bug #9381]
+
 Mon Aug 17 17:43:56 2015  Eric Wong  <e@8...>
 
 	* io.c (rb_io_oflags_modestr): handle O_TRUNC correctly
Index: ruby_2_1/hash.c
===================================================================
--- ruby_2_1/hash.c	(revision 51612)
+++ ruby_2_1/hash.c	(revision 51613)
@@ -135,7 +135,7 @@ rb_any_hash(VALUE a) https://github.com/ruby/ruby/blob/trunk/ruby_2_1/hash.c#L135
 	if (a == Qundef) return 0;
 	if (FLONUM_P(a)) {
 	    /* prevent pathological behavior: [Bug #10761] */
-	    return rb_dbl_hash(rb_float_value(a));
+	    goto flt;
 	}
 	hnum = rb_objid_hash((st_index_t)a);
     }
@@ -143,7 +143,9 @@ rb_any_hash(VALUE a) https://github.com/ruby/ruby/blob/trunk/ruby_2_1/hash.c#L143
 	hnum = rb_str_hash(a);
     }
     else if (BUILTIN_TYPE(a) == T_FLOAT) {
-	return rb_dbl_hash(rb_float_value(a));
+      flt:
+	hval = rb_dbl_hash(rb_float_value(a));
+	hnum = FIX2LONG(hval);
     }
     else {
         hval = rb_hash(a);
Index: ruby_2_1/version.h
===================================================================
--- ruby_2_1/version.h	(revision 51612)
+++ ruby_2_1/version.h	(revision 51613)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/version.h#L1
 #define RUBY_VERSION "2.1.7"
 #define RUBY_RELEASE_DATE "2015-08-17"
-#define RUBY_PATCHLEVEL 395
+#define RUBY_PATCHLEVEL 396
 
 #define RUBY_RELEASE_YEAR 2015
 #define RUBY_RELEASE_MONTH 8
Index: ruby_2_1/test/ruby/test_hash.rb
===================================================================
--- ruby_2_1/test/ruby/test_hash.rb	(revision 51612)
+++ ruby_2_1/test/ruby/test_hash.rb	(revision 51613)
@@ -1262,8 +1262,14 @@ class TestHash < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/ruby/test_hash.rb#L1262
       end
     end
 
-    hash = {5 => bug9381}
-    assert_equal(bug9381, hash[wrapper.new(5)])
+    bad = [
+      5, true, false, nil,
+      0.0, 1.72723e-77,
+    ].select do |x|
+      hash = {x => bug9381}
+      hash[wrapper.new(x)] != bug9381
+    end
+    assert_empty(bad, bug9381)
   end
 
   class TestSubHash < TestHash

Property changes on: ruby_2_1
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r51423,51425


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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