diff --git a/hphp/runtime/ext/ext_simplexml.cpp b/hphp/runtime/ext/ext_simplexml.cpp index da28396c7..1b23e0e5a 100644 --- a/hphp/runtime/ext/ext_simplexml.cpp +++ b/hphp/runtime/ext/ext_simplexml.cpp @@ -165,6 +165,8 @@ static Array create_children(CResRef doc, xmlNodePtr root, CStrRef ns, bool is_prefix) { Array properties = Array::Create(); for (xmlNodePtr node = root->children; node; node = node->next) { + if (root->parent && root->parent->type == XML_DOCUMENT_NODE && + node->type == XML_COMMENT_NODE) continue; if (node->children || node->prev || node->next) { if (node->type == XML_TEXT_NODE) { // bad node from parser, ignoring it... diff --git a/hphp/test/slow/simple_xml/exclude_comments.php b/hphp/test/slow/simple_xml/exclude_comments.php new file mode 100644 index 000000000..10e1a3d04 --- /dev/null +++ b/hphp/test/slow/simple_xml/exclude_comments.php @@ -0,0 +1,14 @@ + + + + + + + +EOF +); +var_dump($element->count()); +var_dump($element->elem1->count()); diff --git a/hphp/test/slow/simple_xml/exclude_comments.php.expect b/hphp/test/slow/simple_xml/exclude_comments.php.expect new file mode 100644 index 000000000..1fd4890e7 --- /dev/null +++ b/hphp/test/slow/simple_xml/exclude_comments.php.expect @@ -0,0 +1,2 @@ +int(1) +int(1)