diff --git a/ChangeLog b/ChangeLog index 9303fc1048..c7b787ba73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Nov 20 19:45:22 2013 Tanaka Akira + + * random.c (rand_init): Make it possible to specify arbitrary array + for init_genrand(). + Wed Nov 20 17:34:13 2013 Koichi Sasada * parse.y (rb_gc_mark_symbols): set global_symbols.minor_marked only diff --git a/random.c b/random.c index 41c20f3dee..e77f56eb49 100644 --- a/random.c +++ b/random.c @@ -377,18 +377,12 @@ rand_init(struct MT *mt, VALUE vseed) seed = rb_to_int(vseed); len = rb_absint_numwords(seed, 32, NULL); - if (MT_MAX_STATE < len) - len = MT_MAX_STATE; if (len > numberof(buf0)) buf = ALLOC_N(unsigned int, len); sign = rb_integer_pack(seed, buf, len, sizeof(uint32_t), 0, INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER); if (sign < 0) sign = -sign; - if (sign != 2) { /* not overflow */ - while (0 < len && buf[len-1] == 0) - len--; - } if (len == 0) { buf[0] = 0; len = 1; diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index d6512383be..a98eaab13c 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -177,7 +177,7 @@ class TestRand < Test::Unit::TestCase end def test_big_seed - assert_random_int(%w(1143843490), 0x100000000, 2**1000000-1) + assert_random_int(%w(2757555016), 0x100000000, 2**1000000-1) end def test_random_gc