#46701 [Ver]: hexadecimal index keys converted wrong in 32bit systems
| From: | mattwil@php.net | Date: | Fri, 28 Nov 2008 20:10:30 +0000 |
| Subject: | #46701 [Ver]: hexadecimal index keys converted wrong in 32bit systems | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-131460@lists.php.net to get a copy of this message | ||
ID: 46701
Updated by: mattwil@php.net
Reported By: testuzer at hotmail dot com
Status: Verified
Bug Type: Arrays related
Operating System: Linux - ubuntu
PHP Version: 5CVS, 6CVS (2008-11-28)
New Comment:
Is this really only happening with array indexes...? Either way, the
bug title isn't accurate.
If it's only with array indexes, it shouldn't be hexadecimal-related,
but would be coming from the simple (long) cast of any double value
(from "long values in the key") in zend_hash_*, resulting in "undefined
behavior."
But, are those values even correct before the array part gets
processed? e.g. does var_dump(0xcc5c4600) give 3428599296? If not, then
it's obviously not array-specific. :-) Hmm, I was just going to say, see
Bug #45068 for the possible cause (and
http://news.php.net/php.internals/40199), but
I just noticed that you
marked that Bogus Jani? Cross-compiling isn't supported? Well, I guess
you're not doing that then when reproducing this... How about you, bug
reporter?
Previous Comments:
------------------------------------------------------------------------
[2008-11-28 12:37:40] jani@php.net
Same result with 32bit linux, this is with 64bit:
# php t.php
Array
(
[3428599296] => 1
[3459455488] => 1
[3459616768] => 1
)
------------------------------------------------------------------------
[2008-11-27 21:04:17] testuzer at hotmail dot com
Description:
------------
Creating associative array with long values in the key fails under
linux builds but work under windows.
Reproduce code:
---------------
$test_array = array(
0xcc5c4600 => 1,
0xce331a00 => 1,
0xce359000 => 1,
);
print_r( $test_array );
Expected result:
----------------
Array
(
[-866368000] => 1
[-835511808] => 1
[-835350528] => 1
)
Actual result:
--------------
Array
(
[-2147483648] => 1
)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=46701&edit=1