diff options
author | Marcus Boerger <helly@php.net> | 2006-04-14 15:19:45 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2006-04-14 15:19:45 +0000 |
commit | 011266f7e13c566badef46f83d20d996f211b38e (patch) | |
tree | 078b4e6c5042cb2e49a5a465f7ef7ee9206b5b88 | |
parent | 7c42ddb8e0e50f9b83cd6f5fe8c00cfaab480faa (diff) | |
download | php-git-011266f7e13c566badef46f83d20d996f211b38e.tar.gz |
- MFH Fix properties access to children() result
-rw-r--r-- | ext/simplexml/simplexml.c | 2 | ||||
-rwxr-xr-x | ext/simplexml/tests/009b.phpt | 35 |
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=== |