diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 6e1985b..a6f1a9f 100755 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -886,7 +886,18 @@ 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.