Browse Source

MFH: fix bug #46047 (SimpleXML converts empty nodes into object with nested array)

add test
PHP-5.2.1RC1
Rob Richards 18 years ago
parent
commit
7d5fe7701b
  1. 10
      ext/simplexml/simplexml.c
  2. 48
      ext/simplexml/tests/bug46047.phpt

10
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;
}
}

48
ext/simplexml/tests/bug46047.phpt

@ -0,0 +1,48 @@
--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
(
)
)
Loading…
Cancel
Save