From: Rob Richards Date: Thu, 11 Sep 2008 14:23:33 +0000 (+0000) Subject: MFH: fix bug #46047 (SimpleXML converts empty nodes into object with nested array) X-Git-Tag: php-5.2.7RC1~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7d5fe7701b259faca7e7ce3116abcde9635c2373;p=php MFH: fix bug #46047 (SimpleXML converts empty nodes into object with nested array) add test --- 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