com php-src: Fixed bug #69892: NEWS Zend/tests/bug69892.phpt Zend/zend_hash.c

From: Date: Sat, 20 Jun 2015 14:40:14 +0000
Subject: com php-src: Fixed bug #69892: NEWS Zend/tests/bug69892.phpt Zend/zend_hash.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-87407@lists.php.net to get a copy of this message
Commit: 5fe078abba7dc87ecc05fa3b9bf544867e947567 Author: Nikita Popov <nikic@php.net> Sat, 20 Jun 2015 16:39:23 +0200 Parents: 6a8db931158a73398135e8f9fd3a050de36dd246 Branches: PHP-5.5 PHP-5.6 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=5fe078abba7dc87ecc05fa3b9bf544867e947567 Log: Fixed bug #69892 Bugs: https://bugs.php.net/69892 Changed paths: M NEWS A Zend/tests/bug69892.phpt M Zend/zend_hash.c Diff: diff --git a/NEWS b/NEWS index 7dd3ffe..822ff10 100644 --- a/NEWS +++ b/NEWS @@ -13,8 +13,10 @@ fault). (Christoph M. Becker) . Fixed bug #69781 (phpinfo() reports Professional Editions of Windows 7/8/8.1/10 as "Business"). (Christian Wenz) - . Fixes bug #69835 (phpinfo() does not report many Windows SKUs). + . Fixed bug #69835 (phpinfo() does not report many Windows SKUs). (Christian Wenz) + . Fixed bug #69892 (Different arrays compare indentical due to integer key + truncation). (Nikita) - GD: . Fixed bug #61221 (imagegammacorrect function loses alpha channel). (cmb) diff --git a/Zend/tests/bug69892.phpt b/Zend/tests/bug69892.phpt new file mode 100644 index 0000000..d14f85f --- /dev/null +++ b/Zend/tests/bug69892.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #69892: Different arrays compare indentical due to integer key truncation +--SKIPIF-- +<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platforms only"); ?> +--FILE-- +<?php +var_dump([0 => 0] === [0x100000000 => 0]); +?> +--EXPECT-- +bool(false) diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index b18fd59..065172c 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -1534,11 +1534,10 @@ ZEND_API int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t co } if (ordered) { if (p1->nKeyLength==0 && p2->nKeyLength==0) { /* numeric indices */ - result = p1->h - p2->h; - if (result!=0) { + if (p1->h != p2->h) { HASH_UNPROTECT_RECURSION(ht1); HASH_UNPROTECT_RECURSION(ht2); - return result; + return p1->h > p2->h ? 1 : -1; } } else { /* string indices */ result = p1->nKeyLength - p2->nKeyLength;

« previous php.cvs (#87407) next »