[Bug 184747] Re: number handling in php broken on 32bit system
Russell Smith
mr-russ at pws.com.au
Fri Apr 25 13:28:53 BST 2008
My understanding is 64bit machines use 64bit integers, so 1 <<31 doesn't
overflow on 64bit. However on 32bit is does overflow. Even though an
unsigned integer is being printed, a signed integer is being calculated
as shown below;
printf("%s\n", (1 << 31)); returns -2147483648
This suggests it's wrapped back to the other end of the signed loop.
I believe the issue is that you wrap a signed integer on 32bit, and then
php doesn't get you back from the edge to give meaningful values. I
don't have the php debugging skills to nail down the specific issue with
integer wraparound. But that is certainly what's being experienced.
PHP Version
--
PHP 5.2.4-2ubuntu5 with Suhosin-Patch 0.9.6.2 (cli) (built: Feb 27 2008 20:43:54)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
--
number handling in php broken on 32bit system
https://bugs.launchpad.net/bugs/184747
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to php5 in ubuntu.
More information about the Ubuntu-server-bugs
mailing list