Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:65753 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 36140 invoked from network); 10 Feb 2013 08:52:16 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 Feb 2013 08:52:16 -0000 Authentication-Results: pb1.pair.com smtp.mail=pierre.php@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=pierre.php@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.217.174 as permitted sender) X-PHP-List-Original-Sender: pierre.php@gmail.com X-Host-Fingerprint: 209.85.217.174 mail-lb0-f174.google.com Received: from [209.85.217.174] ([209.85.217.174:38175] helo=mail-lb0-f174.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 0C/D2-20900-EBF57115 for ; Sun, 10 Feb 2013 03:52:15 -0500 Received: by mail-lb0-f174.google.com with SMTP id l12so3980880lbo.19 for ; Sun, 10 Feb 2013 00:52:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=umtbexcoI0rG3ZBNvV0LvT4LX5PyPedSbHfgSDtffgI=; b=e0qgDa1lOFW0WEjGrP+2KIWMeRnCWoTL83ffi+m+Y+biRuS5f2Gjj1EBwmqQl6oClT wiUCotilkbGK4uAOjjaQY8vLlLLVUDhf9yo5Bjy2TQaV5gEKMdy2pvDJVrrfBJfh3iql DY0Hap/dU+AaWzkhG0qFikAk82WCGO6DnnhwBJ6u3Rhf+G9kTKIc/1/TMFifC3XoaqHG S/Y+xgRDftrDQUgUVs8P2/yCHiiyEiB4p1zxWlXN2jjipxDsnZajrk9yu8/nOX08hS2E rLKt+Hf+VhfiQbVpv+E9K/2VCRO1qNV1e/4BdFdoQ1jFvKV/cT0BAsWnZ+0lB7EFJON+ Le2A== MIME-Version: 1.0 X-Received: by 10.152.105.103 with SMTP id gl7mr9550505lab.41.1360486332054; Sun, 10 Feb 2013 00:52:12 -0800 (PST) Received: by 10.112.111.131 with HTTP; Sun, 10 Feb 2013 00:52:11 -0800 (PST) In-Reply-To: <5116D57F.6030802@ellisons.org.uk> References: <511666DE.8080809@fedoraproject.org> <5116D57F.6030802@ellisons.org.uk> Date: Sun, 10 Feb 2013 09:52:11 +0100 Message-ID: To: Terry Ellison Cc: Remi Collet , PHP Internals Content-Type: text/plain; charset=ISO-8859-1 Subject: Re: [PHP-DEV] double val to long val conversion issue From: pierre.php@gmail.com (Pierre Joye) hi Terry. On Sun, Feb 10, 2013 at 12:02 AM, Terry Ellison wrote: > On 09/02/13 15:47, Pierre Joye wrote: > > hi Remi > > On Sat, Feb 9, 2013 at 4:10 PM, Remi Collet wrote: > > About > http://git.php.net/?p=php-src.git;a=commitdiff;h=79956330fe17cfd5f60de456497541b21a89bddf > (For now, I have reverted this fix) > > Here some explanations. > > LONG_MAX is 9223372036854775807 (0x7fffffffffffffff) > double representation of LONG_MAX is 9223372036854775808 > > (d > LONG_MAX) is evaluated in double space. > So is false for double which have the same value than (double)LONG_MAX. > > So, for (double)LONG_MAX the cast used is > (long)d > > 9223372036854775807 on ppc64 > 9223372036854775808 on x86_64 (gcc without optimization) > 9223372036854775807 on x86_64 (gcc -O2) > > PHP expected value is 9223372036854775808 > (Btw, I don't understand why PHP, build on x86_64, with -O2, gives the > good result, some environment mystery) > > Obviously, we could have different result on different platform, > compiler, architecture. > > I will be very interested by result on other platform (mac, windows), > compiler (Visual C), architecture. > > If we switch to the unsigned cast: > (long)(unsigned long)d; > > Any comments ? > IIRC, on windows/visualC, no matter if it is x86 or x64, long is > always 32bits, so it won't change the size of long. Yes, that's the case, see my other reply in this thread. > It would be good for PHP to have a road map to removed data model-specific > potholes, say by 5.6 or 5.7. I do not think this change is small enough to be done in 5.x but definitively in the next major. We have to keep in mind the impacts of such a change on the code base and all external projects, be extensions or libraries used by PHP. In addition, buffers size should use (u)size_t and not int32/64. Cheers, -- Pierre @pierrejoye