mirror of https://github.com/AxioDL/tinyxml2.git
accept a nBytes argument for Parse()
This commit is contained in:
parent
2f1f6247e0
commit
e2bcb32494
14
tinyxml2.cpp
14
tinyxml2.cpp
|
@ -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();
|
DeleteChildren();
|
||||||
InitDocument();
|
InitDocument();
|
||||||
|
@ -1631,6 +1631,13 @@ int XMLDocument::Parse( const char* p )
|
||||||
SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
|
SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
|
||||||
return errorID;
|
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::SkipWhiteSpace( p );
|
||||||
p = XMLUtil::ReadBOM( p, &writeBOM );
|
p = XMLUtil::ReadBOM( p, &writeBOM );
|
||||||
if ( !p || !*p ) {
|
if ( !p || !*p ) {
|
||||||
|
@ -1638,11 +1645,6 @@ int XMLDocument::Parse( const char* p )
|
||||||
return errorID;
|
return errorID;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t len = strlen( p );
|
|
||||||
charBuffer = new char[ len+1 ];
|
|
||||||
memcpy( charBuffer, p, len+1 );
|
|
||||||
|
|
||||||
|
|
||||||
ParseDeep( charBuffer, 0 );
|
ParseDeep( charBuffer, 0 );
|
||||||
return errorID;
|
return errorID;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1072,8 +1072,13 @@ public:
|
||||||
Parse an XML file from a character string.
|
Parse an XML file from a character string.
|
||||||
Returns XML_NO_ERROR (0) on success, or
|
Returns XML_NO_ERROR (0) on success, or
|
||||||
an errorID.
|
an errorID.
|
||||||
|
|
||||||
|
You may optionally pass in the 'nBytes', which is
|
||||||
|
the number of bytes which will be parsed. If not
|
||||||
|
specified, TinyXML will assume 'xml' points to a
|
||||||
|
null terminated string.
|
||||||
*/
|
*/
|
||||||
int Parse( const char* xml );
|
int Parse( const char* xml, size_t nBytes=(size_t)(-1) );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Load an XML file from disk.
|
Load an XML file from disk.
|
||||||
|
|
|
@ -947,6 +947,14 @@ int main( int /*argc*/, const char ** /*argv*/ )
|
||||||
XMLTest( "Non-alpha element lead letter parses.", doc.Error(), false );
|
XMLTest( "Non-alpha element lead letter parses.", doc.Error(), false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const char* xml = "<element/>WOA THIS ISN'T GOING TO PARSE";
|
||||||
|
XMLDocument doc;
|
||||||
|
doc.Parse( xml, 10 );
|
||||||
|
//doc.Print();
|
||||||
|
XMLTest( "Set length of incoming data", doc.Error(), false );
|
||||||
|
}
|
||||||
|
|
||||||
// ----------- Whitespace ------------
|
// ----------- Whitespace ------------
|
||||||
{
|
{
|
||||||
const char* xml = "<element>"
|
const char* xml = "<element>"
|
||||||
|
|
Loading…
Reference in New Issue