helly           Mon Feb 27 13:38:04 2006 UTC

  Added files:                 (Branch: PHP_5_1)
    /php-src/ext/simplexml/tests        029.phpt 

  Modified files:              
    /php-src/ext/simplexml      simplexml.c 
  Log:
  - MFH Fix count/foreach interaction
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/simplexml/simplexml.c?r1=1.151.2.14&r2=1.151.2.15&diff_format=u
Index: php-src/ext/simplexml/simplexml.c
diff -u php-src/ext/simplexml/simplexml.c:1.151.2.14 
php-src/ext/simplexml/simplexml.c:1.151.2.15
--- php-src/ext/simplexml/simplexml.c:1.151.2.14        Mon Feb 27 11:55:18 2006
+++ php-src/ext/simplexml/simplexml.c   Mon Feb 27 13:38:03 2006
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: simplexml.c,v 1.151.2.14 2006/02/27 11:55:18 helly Exp $ */
+/* $Id: simplexml.c,v 1.151.2.15 2006/02/27 13:38:03 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -1438,9 +1438,14 @@
 {
        php_sxe_object  *sxe;
        xmlNodePtr       node;
+       zval            *data;
 
        *count = 0;
        sxe = php_sxe_fetch_object(object TSRMLS_CC);
+
+       data = sxe->iter.data;
+       sxe->iter.data = NULL;
+
        node = php_sxe_reset_iterator(sxe, 0 TSRMLS_CC);
        
        while (node)
@@ -1450,6 +1455,11 @@
        }
 
 
+       if (sxe->iter.data) {
+               zval_ptr_dtor(&sxe->iter.data);
+       }
+       sxe->iter.data = data;
+
        return SUCCESS;
 }
 /* }}} */
@@ -2103,7 +2113,7 @@
 {
        php_info_print_table_start();
        php_info_print_table_header(2, "Simplexml support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.14 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.15 $");
        php_info_print_table_row(2, "Schema support",
 #ifdef LIBXML_SCHEMAS_ENABLED
                "enabled");

http://cvs.php.net/viewcvs.cgi/php-src/ext/simplexml/tests/029.phpt?view=markup&rev=1.1
Index: php-src/ext/simplexml/tests/029.phpt
+++ php-src/ext/simplexml/tests/029.phpt
--TEST--
SimpleXML: foreach and count
--SKIPIF--
<?php if (!extension_loaded("simplexml")) print "skip"; ?>
--FILE--
<?php 
$xml =<<<EOF
<people>
  <person name="Joe"/>
  <person name="John">
    <children>
      <person name="Joe"/>
    </children>
  </person>
  <person name="Jane"/>
</people>
EOF;

$people = simplexml_load_string($xml);

foreach($people as $person)
{
        var_dump((string)$person['name']);
        var_dump(count($people));
        var_dump(count($person));
}

?>
===DONE===
--EXPECTF--
string(3) "Joe"
int(3)
int(0)
string(4) "John"
int(3)
int(1)
string(4) "Jane"
int(3)
int(0)
===DONE===
--UEXPECTF--
unicode(3) "Joe"
int(3)
int(0)
unicode(4) "John"
int(3)
int(1)
unicode(4) "Jane"
int(3)
int(0)
===DONE===

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

Reply via email to