ruby-changes:12525
From: mame <ko1@a...>
Date: Tue, 21 Jul 2009 23:51:57 +0900 (JST)
Subject: [ruby-changes:12525] Ruby:r24228 (trunk): * random.c (rand_init): array length of random seed was broken, which
mame 2009-07-21 23:51:17 +0900 (Tue, 21 Jul 2009) New Revision: 24228 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24228 Log: * random.c (rand_init): array length of random seed was broken, which causes memory error with srand(2**1000000-1). * test/ruby/test_rand.c: test for above. Modified files: trunk/ChangeLog trunk/random.c trunk/test/ruby/test_rand.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 24227) +++ ChangeLog (revision 24228) @@ -1,3 +1,10 @@ +Tue Jul 21 23:47:38 2009 Yusuke Endoh <mame@t...> + + * random.c (rand_init): array length of random seed was broken, which + causes memory error with srand(2**1000000-1). + + * test/ruby/test_rand.c: test for above. + Tue Jul 21 21:37:19 2009 Keiju Ishitsuka <keiju@e...> * lib/irb/cmd/help.rb: fixed irb's "help" command. [ruby-core:22310]. Index: test/ruby/test_rand.rb =================================================================== --- test/ruby/test_rand.rb (revision 24227) +++ test/ruby/test_rand.rb (revision 24228) @@ -164,4 +164,9 @@ srand(0) assert_equal([1,4,2,5,3], [1,2,3,4,5].shuffle) end + + def test_big_seed + srand(2**1000000-1) + assert_equal(1143843490, rand(0x100000000)) + end end Index: random.c =================================================================== --- random.c (revision 24227) +++ random.c (revision 24228) @@ -304,11 +304,9 @@ if (blen == 0) { len = 1; } - else if (blen > MT_MAX_STATE * SIZEOF_INT32 / SIZEOF_BDIGITS) { - blen = (len = MT_MAX_STATE) * SIZEOF_INT32 / SIZEOF_BDIGITS; - len = roomof(len, SIZEOF_INT32); - } else { + if (blen > MT_MAX_STATE * SIZEOF_INT32 / SIZEOF_BDIGITS) + blen = (len = MT_MAX_STATE) * SIZEOF_INT32 / SIZEOF_BDIGITS; len = roomof((int)blen * SIZEOF_BDIGITS, SIZEOF_INT32); } /* allocate ints for init_by_array */ -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/