diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-15 03:03:45 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-15 03:03:45 +0000 |
commit | 9529e46adf33ce88bb7804f0dd1dda96cd4ab1bb (patch) | |
tree | aa0bee9c7edecb776390c5b3ca00e21fc4b5292c /random.c | |
parent | 5cb5692ac8758420ddb7b5bdae337f2338d91b26 (diff) | |
download | ruby-9529e46adf33ce88bb7804f0dd1dda96cd4ab1bb.tar.gz |
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
Diffstat (limited to 'random.c')
-rw-r--r-- | random.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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) { |