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

ruby-changes:31000

From: nagachika <ko1@a...>
Date: Sat, 28 Sep 2013 22:04:59 +0900 (JST)
Subject: [ruby-changes:31000] nagachika:r43079 (ruby_2_0_0): merge revision(s) 42542: [Backport #8910]

nagachika	2013-09-28 22:04:48 +0900 (Sat, 28 Sep 2013)

  New Revision: 43079

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

  Log:
    merge revision(s) 42542: [Backport #8910]
    
    * random.c (rb_random_ulong_limited): coerce before check negative.
      [Fixes GH-379]

  Modified directories:
    branches/ruby_2_0_0/
  Modified files:
    branches/ruby_2_0_0/ChangeLog
    branches/ruby_2_0_0/random.c
    branches/ruby_2_0_0/test/ruby/test_array.rb
    branches/ruby_2_0_0/version.h
Index: ruby_2_0_0/ChangeLog
===================================================================
--- ruby_2_0_0/ChangeLog	(revision 43078)
+++ ruby_2_0_0/ChangeLog	(revision 43079)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/ChangeLog#L1
+Sat Sep 28 21:40:40 2013  Kenichi Kamiya  <kachick1@g...>
+
+	* random.c (rb_random_ulong_limited): coerce before check negative.
+	  [Fixes GH-379]
+
 Fri Sep 27 01:24:20 2013  CHIKANAGA Tomoyuki  <nagachika@r...>
 
 	* lib/rubygems: Update to Rubygems 2.0.10. [ruby-core:57360]
Index: ruby_2_0_0/version.h
===================================================================
--- ruby_2_0_0/version.h	(revision 43078)
+++ ruby_2_0_0/version.h	(revision 43079)
@@ -1,10 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/version.h#L1
 #define RUBY_VERSION "2.0.0"
-#define RUBY_RELEASE_DATE "2013-09-27"
-#define RUBY_PATCHLEVEL 321
+#define RUBY_RELEASE_DATE "2013-09-28"
+#define RUBY_PATCHLEVEL 322
 
 #define RUBY_RELEASE_YEAR 2013
 #define RUBY_RELEASE_MONTH 9
-#define RUBY_RELEASE_DAY 27
+#define RUBY_RELEASE_DAY 28
 
 #include "ruby/version.h"
 
Index: ruby_2_0_0/test/ruby/test_array.rb
===================================================================
--- ruby_2_0_0/test/ruby/test_array.rb	(revision 43078)
+++ ruby_2_0_0/test/ruby/test_array.rb	(revision 43079)
@@ -2020,6 +2020,19 @@ class TestArray < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/test/ruby/test_array.rb#L2020
       alias rand call
     end
     assert_raise(RuntimeError) {ary.shuffle!(random: gen)}
+
+    zero = Object.new
+    def zero.to_int
+      0
+    end
+    gen_to_int = proc do |max|
+      zero
+    end
+    class << gen_to_int
+      alias rand call
+    end
+    ary = (0...10000).to_a
+    assert_equal(ary.rotate, ary.shuffle(random: gen_to_int))
   end
 
   def test_sample
@@ -2103,6 +2116,19 @@ class TestArray < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/test/ruby/test_array.rb#L2116
     assert_equal([5000, 0, 5001, 2, 5002, 4, 5003, 6, 5004, 8, 5005], ary.sample(11, random: gen0))
     ary.sample(11, random: gen1) # implementation detail, may change in the future
     assert_equal([], ary)
+
+    half = Object.new
+    def half.to_int
+      5000
+    end
+    gen_to_int = proc do |max|
+      half
+    end
+    class << gen_to_int
+      alias rand call
+    end
+    ary = (0...10000).to_a
+    assert_equal(5000, ary.sample(random: gen_to_int))
   end
 
   def test_cycle
Index: ruby_2_0_0/random.c
===================================================================
--- ruby_2_0_0/random.c	(revision 43078)
+++ ruby_2_0_0/random.c	(revision 43079)
@@ -965,7 +965,7 @@ rb_random_ulong_limited(VALUE obj, unsig https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/random.c#L965
     if (!rnd) {
 	extern int rb_num_negative_p(VALUE);
 	VALUE lim = ulong_to_num_plus_1(limit);
-	VALUE v = rb_funcall2(obj, id_rand, 1, &lim);
+	VALUE v = rb_to_int(rb_funcall2(obj, id_rand, 1, &lim));
 	unsigned long r = NUM2ULONG(v);
 	if (rb_num_negative_p(v)) {
 	    rb_raise(rb_eRangeError, "random number too small %ld", r);

Property changes on: ruby_2_0_0
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r42542


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

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