com php-src: Fixed bug #69892: NEWS Zend/tests/bug69892.phpt Zend/zend_hash.c
| From: | Stanislav Malyshev | Date: | Sun, 02 Aug 2015 03:47:43 +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-88266@lists.php.net to get a copy of this message | ||
Commit: 7fc04937f5ba48e05d311937477ba81b0e07ffa8
Author: Nikita Popov <nikic@php.net> Sat, 20 Jun 2015 16:39:23 +0200
Committer: Stanislav Malyshev <stas@php.net> Sat, 1 Aug 2015 20:47:43 -0700
Parents: 8f1baa6e1ceffb54529402e210e6397466e1049a
Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=7fc04937f5ba48e05d311937477ba81b0e07ffa8
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 ab5f07d..544346f 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2015 PHP 5.4.44
+. Fixed bug #69892 (Different arrays compare indentical due to integer key
+ truncation). (Nikita)
+
09 Jul 2015 PHP 5.4.43
- Core:
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 bfff87a..9b3fb74 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -1513,11 +1513,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;