]> granicus.if.org Git - php/commitdiff
- MFH Fix properties access to children() result
authorMarcus Boerger <helly@php.net>
Fri, 14 Apr 2006 15:19:45 +0000 (15:19 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 14 Apr 2006 15:19:45 +0000 (15:19 +0000)
ext/simplexml/simplexml.c
ext/simplexml/tests/009b.phpt [new file with mode: 0755]

index 99d16d779035bf3ed0e5ca6653e186b529a9baa4..a51b4804ea719936024c566b7a272ee28a9e7842 100644 (file)
@@ -989,7 +989,7 @@ static HashTable * sxe_properties_get(zval *object TSRMLS_DC)
                        ZVAL_STRING(value, sxe_xmlNodeListGetString(node->doc, node->children, 1), 0);
                        zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL);
                        node = NULL;
-               } else {
+               } else if (sxe->iter.type != SXE_ITER_CHILD) {
                        node = node->children;
                }
 
diff --git a/ext/simplexml/tests/009b.phpt b/ext/simplexml/tests/009b.phpt
new file mode 100755 (executable)
index 0000000..dba300c
--- /dev/null
@@ -0,0 +1,35 @@
+--TEST--
+SimpleXML: foreach 
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php 
+$sxe = simplexml_load_string(<<<EOF
+<?xml version='1.0'?>
+<!DOCTYPE sxe SYSTEM "notfound.dtd">
+<sxe id="elem1">
+ Plain text.
+ <elem1 attr1='first'>Bla bla 1.<!-- comment --><elem2>
+   Here we have some text data.
+  </elem2></elem1>
+ <elem11 attr2='second'>Bla bla 2.</elem11>
+</sxe>
+EOF
+);
+var_dump($sxe->children());
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+object(SimpleXMLElement)#%d (3) {
+  ["@attributes"]=>
+  array(1) {
+    ["id"]=>
+    string(5) "elem1"
+  }
+  ["elem1"]=>
+  string(10) "Bla bla 1."
+  ["elem11"]=>
+  string(10) "Bla bla 2."
+}
+===DONE===