summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--random.c2
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5355a7943d..657b353d48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Jul 4 13:08:48 2016 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (random_ulong_limited): avoid left shift count >= width of
+ type on 32bit environment.
+
Sun Jul 3 18:51:42 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* test/ruby/enc/test_case_comprehensive.rb, test_regex_casefold.rb,
diff --git a/random.c b/random.c
index 4ffebf07f9..bc6474f864 100644
--- a/random.c
+++ b/random.c
@@ -992,9 +992,7 @@ random_ulong_limited(VALUE obj, rb_random_t *rnd, unsigned long limit)
const int n = w > 32 ? sizeof(unsigned long) : sizeof(uint32_t);
const unsigned long mask = ~(~0UL << w);
const unsigned long full =
-#if SIZEOF_LONG == 4
(size_t)n >= sizeof(unsigned long) ? ~0UL :
-#endif
~(~0UL << n * CHAR_BIT);
unsigned long val, bits = 0, rest = 0;
do {