pierrick                                 Tue, 28 Jun 2011 11:09:06 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=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.c        2011-06-28 
11:03:16 UTC (rev 312563)
+++ php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c        2011-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.phpt    2011-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>
+<node>val1</node>
+<node>val2</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.c        2011-06-28 
11:03:16 UTC (rev 312563)
+++ php/php-src/branches/PHP_5_4/ext/spl/spl_iterators.c        2011-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.phpt    2011-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>
+<node>val1</node>
+<node>val2</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/trunk/ext/spl/spl_iterators.c
===================================================================
--- php/php-src/trunk/ext/spl/spl_iterators.c   2011-06-28 11:03:16 UTC (rev 
312563)
+++ php/php-src/trunk/ext/spl/spl_iterators.c   2011-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/trunk/ext/spl/tests/bug54971.phpt
===================================================================
--- php/php-src/trunk/ext/spl/tests/bug54971.phpt                               
(rev 0)
+++ php/php-src/trunk/ext/spl/tests/bug54971.phpt       2011-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>
+<node>val1</node>
+<node>val2</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
+        (
+        )
+
+)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to