aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-12 15:16:45 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-12 15:16:45 +0000
commit19afeacb884b53949236c30afaa4ce2866c30603 (patch)
tree8e767f53a9765c6b0b1a7aee15b72f09cd69d91a
parent309077c9ae3b530052dce39ab871a04bce1b9468 (diff)
downloadruby-19afeacb884b53949236c30afaa4ce2866c30603.tar.gz
* random.c (rand_init): use the absolute value of seed to
make srand(-2**40) portable with 32bit and 64bit. [ruby-core:29292](2) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--random.c2
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index d7b1164923..4f2c6da71d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue Apr 13 00:12:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * random.c (rand_init): use the absolute value of seed to
+ make srand(-2**40) portable with 32bit and 64bit.
+ [ruby-core:29292](2)
+
Mon Apr 12 22:48:47 2010 Tanaka Akira <akr@fsij.org>
* enumerator.c (inspect_enumerator): don't raise for uninitialized
diff --git a/random.c b/random.c
index de047995d5..149069c76e 100644
--- a/random.c
+++ b/random.c
@@ -376,6 +376,8 @@ rand_init(struct MT *mt, VALUE vseed)
case T_FIXNUM:
len = 1;
fixnum_seed = FIX2LONG(seed);
+ if (fixnum_seed < 0)
+ fixnum_seed = -fixnum_seed;
buf[0] = (unsigned int)(fixnum_seed & 0xffffffff);
#if SIZEOF_LONG > SIZEOF_INT32
if ((long)(int)fixnum_seed != fixnum_seed) {