rrichards Thu Sep 11 14:20:30 2008 UTC Added files: /php-src/ext/simplexml/tests bug46047.phpt
Modified files: /php-src/ext/simplexml simplexml.c Log: fix bug #46047 (SimpleXML converts empty nodes into object with nested array) add test http://cvs.php.net/viewvc.cgi/php-src/ext/simplexml/simplexml.c?r1=1.260&r2=1.261&diff_format=u Index: php-src/ext/simplexml/simplexml.c diff -u php-src/ext/simplexml/simplexml.c:1.260 php-src/ext/simplexml/simplexml.c:1.261 --- php-src/ext/simplexml/simplexml.c:1.260 Wed Sep 10 16:28:20 2008 +++ php-src/ext/simplexml/simplexml.c Thu Sep 11 14:20:30 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: simplexml.c,v 1.260 2008/09/10 16:28:20 rrichards Exp $ */ +/* $Id: simplexml.c,v 1.261 2008/09/11 14:20:30 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1142,13 +1142,17 @@ SKIP_TEXT(node); } else { if (node->type == XML_TEXT_NODE) { - xmlChar *tmp; - - MAKE_STD_ZVAL(value); - tmp = xmlNodeListGetString(node->doc, node, 1); - ZVAL_XML_STRING(value, (char *)tmp, ZSTR_DUPLICATE); - xmlFree(tmp); - zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL); + const xmlChar *cur = node->content; + + if (*cur != 0) { + xmlChar *tmp; + + MAKE_STD_ZVAL(value); + tmp = xmlNodeListGetString(node->doc, node, 1); + ZVAL_XML_STRING(value, (char *)tmp, ZSTR_DUPLICATE); + xmlFree(tmp); + zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL); + } goto next_iter; } } @@ -2640,7 +2644,7 @@ { php_info_print_table_start(); php_info_print_table_header(2, "Simplexml support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.260 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.261 $"); php_info_print_table_row(2, "Schema support", #ifdef LIBXML_SCHEMAS_ENABLED "enabled"); http://cvs.php.net/viewvc.cgi/php-src/ext/simplexml/tests/bug46047.phpt?view=markup&rev=1.1 Index: php-src/ext/simplexml/tests/bug46047.phpt +++ php-src/ext/simplexml/tests/bug46047.phpt --TEST-- Bug #46047 (SimpleXML converts empty nodes into object with nested array) --FILE-- <?php $xml = new SimpleXMLElement('<foo><bar><![CDATA[]]></bar><baz/></foo>', LIBXML_NOCDATA); print_r($xml); $xml = new SimpleXMLElement('<foo><bar></bar><baz/></foo>'); print_r($xml); $xml = new SimpleXMLElement('<foo><bar/><baz/></foo>'); 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 ( ) ) -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php