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