summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-20 11:05:38 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-20 11:05:38 +0000
commitced9ad5ab546d7ae478066a13116015033e2b485 (patch)
treeb07d39b3def6e9841b92079c7861b57bee324a6a
parentcdde8c23de076db8c89795bf8a1bb4308d72d9c1 (diff)
* random.c (rand_init): Make it possible to specify arbitrary array
for init_genrand(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--random.c6
-rw-r--r--test/ruby/test_rand.rb2
3 files changed, 6 insertions, 7 deletions
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 <akr@fsij.org>
+
+ * random.c (rand_init): Make it possible to specify arbitrary array
+ for init_genrand().
+
Wed Nov 20 17:34:13 2013 Koichi Sasada <ko1@atdot.net>
* 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