pierrick Tue, 28 Jun 2011 11:09:06 +
Revision: http://svn.php.net/viewvc?view=revisionrevision=312564
Log:
Fixed bug #54971 (Wrong result when using iterator_to_array with use_keys on
true)
Bug: http://bugs.php.net/54971 (unknown)
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c
A php/php-src/branches/PHP_5_3/ext/spl/tests/bug54971.phpt
U php/php-src/branches/PHP_5_4/ext/spl/spl_iterators.c
A php/php-src/branches/PHP_5_4/ext/spl/tests/bug54971.phpt
U php/php-src/trunk/ext/spl/spl_iterators.c
A php/php-src/trunk/ext/spl/tests/bug54971.phpt
Modified: php/php-src/branches/PHP_5_3/NEWS
===
--- php/php-src/branches/PHP_5_3/NEWS 2011-06-28 11:03:16 UTC (rev 312563)
+++ php/php-src/branches/PHP_5_3/NEWS 2011-06-28 11:09:06 UTC (rev 312564)
@@ -14,6 +14,9 @@
- PDO ODBC driver:
. Fixed data type usage in 64bit. (leocsilva at gmail dot com)
+- SPL extension:
+ . Fixed bug #54971 (Wrong result when using iterator_to_array with use_keys
+on true). (Pierrick)
16 Jun 2011, PHP 5.3.7 RC1
- Upgraded bundled SQLite to version 3.7.6.3. (Scott)
Modified: php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c
===
--- php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c2011-06-28
11:03:16 UTC (rev 312563)
+++ php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c2011-06-28
11:09:06 UTC (rev 312564)
@@ -3306,6 +3306,7 @@
goto done;
}
+ iter-index = 0;
if (iter-funcs-rewind) {
iter-funcs-rewind(iter TSRMLS_CC);
if (EG(exception)) {
@@ -3320,6 +3321,7 @@
if (apply_func(iter, puser TSRMLS_CC) == ZEND_HASH_APPLY_STOP
|| EG(exception)) {
goto done;
}
+ iter-index++;
iter-funcs-move_forward(iter TSRMLS_CC);
if (EG(exception)) {
goto done;
Added: php/php-src/branches/PHP_5_3/ext/spl/tests/bug54971.phpt
===
--- php/php-src/branches/PHP_5_3/ext/spl/tests/bug54971.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_3/ext/spl/tests/bug54971.phpt2011-06-28
11:09:06 UTC (rev 312564)
@@ -0,0 +1,45 @@
+--TEST--
+Bug #54971 (Wrong result when using iterator_to_array with use_keys on true)
+--FILE--
+?php
+
+$source = XML
+root
+nodeval1/node
+nodeval2/node
+/root
+XML;
+
+
+$doc = new DOMDocument();
+$doc-loadXML($source);
+
+$xpath = new DOMXPath($doc);
+$items = $xpath-query('//node');
+
+print_r(iterator_to_array($items, false));
+print_r(iterator_to_array($items, true));
+?
+--EXPECT--
+Array
+(
+[0] = DOMElement Object
+(
+)
+
+[1] = DOMElement Object
+(
+)
+
+)
+Array
+(
+[0] = DOMElement Object
+(
+)
+
+[1] = DOMElement Object
+(
+)
+
+)
Modified: php/php-src/branches/PHP_5_4/ext/spl/spl_iterators.c
===
--- php/php-src/branches/PHP_5_4/ext/spl/spl_iterators.c2011-06-28
11:03:16 UTC (rev 312563)
+++ php/php-src/branches/PHP_5_4/ext/spl/spl_iterators.c2011-06-28
11:09:06 UTC (rev 312564)
@@ -3446,6 +3446,7 @@
goto done;
}
+ iter-index = 0;
if (iter-funcs-rewind) {
iter-funcs-rewind(iter TSRMLS_CC);
if (EG(exception)) {
@@ -3460,6 +3461,7 @@
if (apply_func(iter, puser TSRMLS_CC) == ZEND_HASH_APPLY_STOP
|| EG(exception)) {
goto done;
}
+ iter-index++;
iter-funcs-move_forward(iter TSRMLS_CC);
if (EG(exception)) {
goto done;
Added: php/php-src/branches/PHP_5_4/ext/spl/tests/bug54971.phpt
===
--- php/php-src/branches/PHP_5_4/ext/spl/tests/bug54971.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_4/ext/spl/tests/bug54971.phpt2011-06-28
11:09:06 UTC (rev 312564)
@@ -0,0 +1,45 @@
+--TEST--
+Bug #54971 (Wrong result when using iterator_to_array with use_keys on true)
+--FILE--
+?php
+
+$source = XML
+root
+nodeval1/node
+nodeval2/node
+/root
+XML;
+
+
+$doc = new DOMDocument();
+$doc-loadXML($source);
+
+$xpath = new DOMXPath($doc);
+$items = $xpath-query('//node');
+
+print_r(iterator_to_array($items, false));
+print_r(iterator_to_array($items, true));
+?
+--EXPECT--
+Array
+(
+[0] = DOMElement Object
+(
+)
+
+[1] = DOMElement Object
+(
+)
+
+)
+Array
+(
+[0] = DOMElement Object
+(
+)
+
+[1] = DOMElement Object
+(
+)
+
+)
Modified: