diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index bb5bc6f31e5..941aeeb6482 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1087,7 +1087,7 @@ static HashTable * sxe_get_prop_hash(zval *object, int is_debug TSRMLS_DC) /* {{ if (!node) { return rv; } - if (is_debug) { + if (is_debug || sxe->iter.type != SXE_ITER_CHILD) { if (sxe->iter.type == SXE_ITER_ELEMENT) { node = php_sxe_get_first_node(sxe, node TSRMLS_CC); } diff --git a/ext/simplexml/tests/bug46048.phpt b/ext/simplexml/tests/bug46048.phpt new file mode 100644 index 00000000000..e3eb4f5462f --- /dev/null +++ b/ext/simplexml/tests/bug46048.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #46048 (SimpleXML top-level @attributes not part of iterator) +--FILE-- + + value + +'; +$obj = simplexml_load_string($xml); +print_r(get_object_vars($obj)); +echo "Done\n"; +?> +--EXPECT-- +Array +( + [@attributes] => Array + ( + [id] => 1 + ) + + [key] => value +) +Done