From 9529e46adf33ce88bb7804f0dd1dda96cd4ab1bb Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 15 May 2016 03:03:45 +0000 Subject: random.c: suppress a warning * random.c (random_ulong_limited): suppress a shift count warning when unsigned long is 32bits. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- random.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/random.c b/random.c index 3be22a4ec0..1093a103c1 100644 --- a/random.c +++ b/random.c @@ -991,7 +991,11 @@ random_ulong_limited(VALUE obj, rb_random_t *rnd, unsigned long limit) const int w = sizeof(limit) * CHAR_BIT - nlz_long(limit); const int n = w > 32 ? sizeof(unsigned long) : sizeof(uint32_t); const unsigned long mask = ~(~0UL << w); - const unsigned long full = ~(~0UL << n * CHAR_BIT); + 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 { if (mask & ~rest) { -- cgit v1.2.3