On Sun, May 10, 2015 at 12:40 PM, Lauri Kenttä <lauri.ken...@gmail.com> wrote:
> (x & ~x) is always 0. > ((x & (~x + 1)) != x) works. > ((x & (x - 1)) != 0) works too. > --- > ext/standard/random.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ext/standard/random.c b/ext/standard/random.c > index 12c2503..4a1adbf 100644 > --- a/ext/standard/random.c > +++ b/ext/standard/random.c > @@ -182,7 +182,7 @@ PHP_FUNCTION(random_int) > umax++; > > /* Powers of two are not biased */ > - if ((umax & ~umax) != umax) { > + if ((umax & (umax - 1)) != 0) { > /* Ceiling under which ZEND_LONG_MAX % max == 0 */ > zend_ulong limit = ZEND_ULONG_MAX - (ZEND_ULONG_MAX % > umax) - 1; > > -- > 2.4.0 > Good catch, thanks! Applied via https://github.com/php/php-src/commit/cf7e5357a46afe1dca978f4887bbd83a7507ce69 . Nikita