|
@@ -887,6 +887,17 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd )
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ XMLDeclaration* decl = 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();
|
|
XMLElement* ele = node->ToElement();
|
|
|
if ( ele ) {
|
|
if ( ele ) {
|
|
|
// We read the end tag. Return it to the parent.
|
|
// We read the end tag. Return it to the parent.
|
|
@@ -1846,7 +1857,7 @@ XMLError XMLDocument::LoadFile( FILE* fp )
|
|
|
return _errorID;
|
|
return _errorID;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if ( filelength >= (size_t)-1 ) {
|
|
|
|
|
|
|
+ if ( (size_t)filelength >= (size_t)-1 ) {
|
|
|
// Cannot handle files which won't fit in buffer together with null terminator
|
|
// Cannot handle files which won't fit in buffer together with null terminator
|
|
|
SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );
|
|
SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );
|
|
|
return _errorID;
|
|
return _errorID;
|