From 7d5fe7701b259faca7e7ce3116abcde9635c2373 Mon Sep 17 00:00:00 2001 From: Rob Richards Date: Thu, 11 Sep 2008 14:23:33 +0000 Subject: [PATCH] MFH: fix bug #46047 (SimpleXML converts empty nodes into object with nested array) add test --- ext/simplexml/simplexml.c | 10 +++++-- ext/simplexml/tests/bug46047.phpt | 48 +++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 ext/simplexml/tests/bug46047.phpt diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 54a1d8f8aa..116b140b4b 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1101,9 +1101,13 @@ static HashTable * sxe_properties_get(zval *object TSRMLS_DC) SKIP_TEXT(node); } else { if (node->type == XML_TEXT_NODE) { - MAKE_STD_ZVAL(value); - ZVAL_STRING(value, sxe_xmlNodeListGetString(node->doc, node, 1), 0); - zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL); + const xmlChar *cur = node->content; + + if (*cur != 0) { + MAKE_STD_ZVAL(value); + ZVAL_STRING(value, sxe_xmlNodeListGetString(node->doc, node, 1), 0); + zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL); + } goto next_iter; } } diff --git a/ext/simplexml/tests/bug46047.phpt b/ext/simplexml/tests/bug46047.phpt new file mode 100644 index 0000000000..37f31cdeb6 --- /dev/null +++ b/ext/simplexml/tests/bug46047.phpt @@ -0,0 +1,48 @@ +--TEST-- +Bug #46047 (SimpleXML converts empty nodes into object with nested array) +--FILE-- +', + LIBXML_NOCDATA); +print_r($xml); + +$xml = new SimpleXMLElement(''); +print_r($xml); + +$xml = new SimpleXMLElement(''); +print_r($xml); +?> +--EXPECTF-- +SimpleXMLElement Object +( + [bar] => SimpleXMLElement Object + ( + ) + + [baz] => SimpleXMLElement Object + ( + ) + +) +SimpleXMLElement Object +( + [bar] => SimpleXMLElement Object + ( + ) + + [baz] => SimpleXMLElement Object + ( + ) + +) +SimpleXMLElement Object +( + [bar] => SimpleXMLElement Object + ( + ) + + [baz] => SimpleXMLElement Object + ( + ) + +) \ No newline at end of file -- 2.50.1