fix error string output when there is no formatting
This commit is contained in:
19
tinyxml2.cpp
19
tinyxml2.cpp
@@ -2305,20 +2305,23 @@ void XMLDocument::SetError( XMLError error, int lineNum, const char* format, ...
|
|||||||
_errorLineNum = lineNum;
|
_errorLineNum = lineNum;
|
||||||
_errorStr.Reset();
|
_errorStr.Reset();
|
||||||
|
|
||||||
if (format) {
|
|
||||||
size_t BUFFER_SIZE = 1000;
|
size_t BUFFER_SIZE = 1000;
|
||||||
char* buffer = new char[BUFFER_SIZE];
|
char* buffer = new char[BUFFER_SIZE];
|
||||||
TIXML_SNPRINTF(buffer, BUFFER_SIZE, "Error=%s ErrorID=%d (0x%x) Line number=%d: ", ErrorIDToName(error), int(error), int(error), lineNum);
|
|
||||||
|
TIXML_SNPRINTF(buffer, BUFFER_SIZE, "Error=%s ErrorID=%d (0x%x) Line number=%d", ErrorIDToName(error), int(error), int(error), lineNum);
|
||||||
|
|
||||||
|
if (format) {
|
||||||
size_t len = strlen(buffer);
|
size_t len = strlen(buffer);
|
||||||
|
TIXML_SNPRINTF(buffer + len, BUFFER_SIZE - len, ": ");
|
||||||
|
len = strlen(buffer);
|
||||||
|
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start( va, format );
|
va_start(va, format);
|
||||||
TIXML_VSNPRINTF( buffer + len, BUFFER_SIZE - len, format, va );
|
TIXML_VSNPRINTF(buffer + len, BUFFER_SIZE - len, format, va);
|
||||||
va_end( va );
|
va_end(va);
|
||||||
|
|
||||||
_errorStr.SetStr(buffer);
|
|
||||||
delete [] buffer;
|
|
||||||
}
|
}
|
||||||
|
_errorStr.SetStr(buffer);
|
||||||
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
10
xmltest.cpp
10
xmltest.cpp
@@ -567,6 +567,10 @@ int main( int argc, const char ** argv )
|
|||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
doc.Parse( error );
|
doc.Parse( error );
|
||||||
XMLTest( "Bad XML", XML_ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );
|
XMLTest( "Bad XML", XML_ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );
|
||||||
|
const char* errorStr = doc.ErrorStr();
|
||||||
|
XMLTest("Formatted error string",
|
||||||
|
"Error=XML_ERROR_PARSING_ATTRIBUTE ErrorID=8 (0x8) Line number=3: XMLElement name=wrong",
|
||||||
|
errorStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -1160,6 +1164,12 @@ int main( int argc, const char ** argv )
|
|||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
doc.Parse( str );
|
doc.Parse( str );
|
||||||
XMLTest( "Empty document error", XML_ERROR_EMPTY_DOCUMENT, doc.ErrorID() );
|
XMLTest( "Empty document error", XML_ERROR_EMPTY_DOCUMENT, doc.ErrorID() );
|
||||||
|
|
||||||
|
// But be sure there is an error string!
|
||||||
|
const char* errorStr = doc.ErrorStr();
|
||||||
|
XMLTest("Error string should be set",
|
||||||
|
"Error=XML_ERROR_EMPTY_DOCUMENT ErrorID=15 (0xf) Line number=0",
|
||||||
|
errorStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user