com php-src: Fixed bug #67169: []= after_array_spli ce incorrect: NEWS Zend/tests/bug67169.phpt Zend/zend_hash.c
| From: | Nikita Popov | Date: | Fri, 02 May 2014 10:49:51 +0000 |
| Subject: | com php-src: Fixed bug #67169: []= after_array_spli ce incorrect: NEWS Zend/tests/bug67169.phpt Zend/zend_hash.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-77224@lists.php.net to get a copy of this message | ||
Commit: 69b5ee61d029b5532cd47ccae6ab0546b6d53106
Author: Nikita Popov <nikic@php.net> Fri, 2 May 2014 12:48:43 +0200
Parents: cc2e89d4e157709ceb062ac316274da729289952
Branches: PHP-5.6 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=69b5ee61d029b5532cd47ccae6ab0546b6d53106
Log:
Fixed bug #67169: []= after_array_splice incorrect
This fixes a regression I introduced in beta 1.
Bugs:
https://bugs.php.net/67169
Changed paths:
M NEWS
A Zend/tests/bug67169.phpt
M Zend/zend_hash.c
Diff:
diff --git a/NEWS b/NEWS
index 72e91e8..d0ce2f1 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,10 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2014, PHP 5.6.0 Beta 3
+- Core:
+ . Fixed bug #67169 (array_splice all elements, then []= gives wrong index).
+ (Nikita)
+
01 May 2014, PHP 5.6.0 Beta 2
- CLI server:
diff --git a/Zend/tests/bug67169.phpt b/Zend/tests/bug67169.phpt
new file mode 100644
index 0000000..8aa6aaf
--- /dev/null
+++ b/Zend/tests/bug67169.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #67169: array_splice all elements, then []= gives wrong index
+--FILE--
+<?php
+
+$array = array('a', 'b');
+array_splice($array, 0, 2);
+$array[] = 'c';
+var_dump($array);
+
+$array = array('a', 'b');
+array_shift($array);
+array_shift($array);
+$array[] = 'c';
+var_dump($array);
+
+?>
+--EXPECT--
+array(1) {
+ [0]=>
+ string(1) "c"
+}
+array(1) {
+ [0]=>
+ string(1) "c"
+}
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index 3096313..a9fd3e9 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -487,6 +487,7 @@ ZEND_API void zend_hash_reindex(HashTable *ht, zend_bool only_integer_keys) {
IS_CONSISTENT(ht);
if (UNEXPECTED(ht->nNumOfElements == 0)) {
+ ht->nNextFreeElement = 0;
return;
}