rrichards Thu Sep 11 14:23:33 2008 UTC Added files: (Branch: PHP_5_2) /php-src/ext/simplexml/tests bug46047.phpt
Modified files: /php-src/ext/simplexml simplexml.c Log: MFH: 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.151.2.22.2.43&r2=1.151.2.22.2.44&diff_format=u Index: php-src/ext/simplexml/simplexml.c diff -u php-src/ext/simplexml/simplexml.c:1.151.2.22.2.43 php-src/ext/simplexml/simplexml.c:1.151.2.22.2.44 --- php-src/ext/simplexml/simplexml.c:1.151.2.22.2.43 Wed Sep 10 16:29:17 2008 +++ php-src/ext/simplexml/simplexml.c Thu Sep 11 14:23:33 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: simplexml.c,v 1.151.2.22.2.43 2008/09/10 16:29:17 rrichards Exp $ */ +/* $Id: simplexml.c,v 1.151.2.22.2.44 2008/09/11 14:23:33 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1101,9 +1101,13 @@ 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; } } @@ -2446,7 +2450,7 @@ { php_info_print_table_start(); php_info_print_table_header(2, "Simplexml support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.22.2.43 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.22.2.44 $"); 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