summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2006-04-14 15:19:45 +0000
committerMarcus Boerger <helly@php.net>2006-04-14 15:19:45 +0000
commit011266f7e13c566badef46f83d20d996f211b38e (patch)
tree078b4e6c5042cb2e49a5a465f7ef7ee9206b5b88
parent7c42ddb8e0e50f9b83cd6f5fe8c00cfaab480faa (diff)
downloadphp-git-011266f7e13c566badef46f83d20d996f211b38e.tar.gz
- MFH Fix properties access to children() result
-rw-r--r--ext/simplexml/simplexml.c2
-rwxr-xr-xext/simplexml/tests/009b.phpt35
2 files changed, 36 insertions, 1 deletions
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index 99d16d7790..a51b4804ea 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -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
index 0000000000..dba300c72f
--- /dev/null
+++ b/ext/simplexml/tests/009b.phpt
@@ -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===