accept a nBytes argument for Parse()

This commit is contained in:
Lee Thomason (grinliz)
2012-09-17 17:58:25 -07:00
parent 2f1f6247e0
commit e2bcb32494
3 changed files with 22 additions and 7 deletions

View File

@@ -1622,7 +1622,7 @@ int XMLDocument::SaveFile( FILE* fp, bool compact )
}
int XMLDocument::Parse( const char* p )
int XMLDocument::Parse( const char* p, size_t len )
{
DeleteChildren();
InitDocument();
@@ -1631,6 +1631,13 @@ int XMLDocument::Parse( const char* p )
SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
return errorID;
}
if ( len == (size_t)(-1) ) {
len = strlen( p );
}
charBuffer = new char[ len+1 ];
memcpy( charBuffer, p, len );
charBuffer[len] = 0;
p = XMLUtil::SkipWhiteSpace( p );
p = XMLUtil::ReadBOM( p, &writeBOM );
if ( !p || !*p ) {
@@ -1638,11 +1645,6 @@ int XMLDocument::Parse( const char* p )
return errorID;
}
size_t len = strlen( p );
charBuffer = new char[ len+1 ];
memcpy( charBuffer, p, len+1 );
ParseDeep( charBuffer, 0 );
return errorID;
}