Fix ParseDeep() to close issue #332

If the node to be added is an XML Declaration, then check if the document has any children already.
XML Declarations can only be the FirstChild() s of an XML Document.
This commit is contained in:
Sarat Addepalli 2015-05-18 09:25:17 +05:30
parent 2bb6bb5bee
commit a0f499dda1
1 changed files with 12 additions and 1 deletions

View File

@ -887,6 +887,17 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd )
break;
}
XMLElement* ele = node->ToDeclaration();
if ( decl ) {
// A declaration can only be the first child of a document.
// Set error, if document already has children.
if ( ! _document->NoChildren() ) {
_document->SetError(XML_ERROR_PARSING_DECLARATION, decl->Value(), 0);
DeleteNode( decl );
break;
}
}
XMLElement* ele = node->ToElement();
if ( ele ) {
// We read the end tag. Return it to the parent.