Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:86149 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 61722 invoked from network); 10 May 2015 11:03:11 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 May 2015 11:03:11 -0000 Authentication-Results: pb1.pair.com header.from=nikita.ppv@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=nikita.ppv@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.212.171 as permitted sender) X-PHP-List-Original-Sender: nikita.ppv@gmail.com X-Host-Fingerprint: 209.85.212.171 mail-wi0-f171.google.com Received: from [209.85.212.171] ([209.85.212.171:38150] helo=mail-wi0-f171.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 5E/B4-19875-DEA3F455 for ; Sun, 10 May 2015 07:03:10 -0400 Received: by wiun10 with SMTP id n10so68367100wiu.1 for ; Sun, 10 May 2015 04:03:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=t7WucvxuSpNAxXN0ZaV3OEFDK4JaVYy2xw7J02wyW4E=; b=QkChM4WoZZTjqa2PZfRmTarhKYPwvHnRK7qhYDxolWPW1EHhY/GKMj8xM6jLWbATPq txUrhByKDkzN3mXdKyEgX2qDV7ecjNvrCPdIBvD2cxbYmhCVrEtyoEajNaNmo3BPoHLB tQUXXH88vNN2LVosBZpJTp/SuP7r60otxs0yOfZIyU77RalSBKqx69u9P6tm1aIp+uOo GyQSolOCB/UOG+Qz+EFlR9BfCtwuA0fuWNSsTJpitAY6ZG+HMvRJbfOye95RQloD75Ok qRN12wM/sltE+ayRLbMxyE7JkL5CtGniS0rjwxLvxwne+gh8w0YtsKmC2Lg9SpkuuIol EoAA== MIME-Version: 1.0 X-Received: by 10.180.79.227 with SMTP id m3mr12154608wix.71.1431255786311; Sun, 10 May 2015 04:03:06 -0700 (PDT) Received: by 10.27.86.133 with HTTP; Sun, 10 May 2015 04:03:06 -0700 (PDT) In-Reply-To: <1431254429-13179-1-git-send-email-lauri.kentta@gmail.com> References: <1431254429-13179-1-git-send-email-lauri.kentta@gmail.com> Date: Sun, 10 May 2015 13:03:06 +0200 Message-ID: To: =?UTF-8?Q?Lauri_Kentt=C3=A4?= Cc: PHP internals Content-Type: multipart/alternative; boundary=14dae9cc9f96b9d5f80515b8347c Subject: Re: [PHP-DEV] [PATCH] random_int: Fix power of two check. From: nikita.ppv@gmail.com (Nikita Popov) --14dae9cc9f96b9d5f80515b8347c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sun, May 10, 2015 at 12:40 PM, Lauri Kentt=C3=A4 wrote: > (x & ~x) is always 0. > ((x & (~x + 1)) !=3D x) works. > ((x & (x - 1)) !=3D 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) !=3D umax) { > + if ((umax & (umax - 1)) !=3D 0) { > /* Ceiling under which ZEND_LONG_MAX % max =3D=3D 0 */ > zend_ulong limit =3D ZEND_ULONG_MAX - (ZEND_ULONG_MAX % > umax) - 1; > > -- > 2.4.0 > Good catch, thanks! Applied via https://github.com/php/php-src/commit/cf7e5357a46afe1dca978f4887bbd83a7507c= e69 . Nikita --14dae9cc9f96b9d5f80515b8347c--