Asserts for formatted output length
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index edf714d..3f45d1a 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -75,10 +75,12 @@
const int required = _vsnprintf(str, len, format, va);
delete[] str;
if ( required != -1 ) {
+ TIXMLASSERT( required >= 0 );
len = required;
break;
}
}
+ TIXMLASSERT( len >= 0 );
return len;
}
#endif
@@ -90,6 +92,7 @@
inline int TIXML_VSCPRINTF( const char* format, va_list va )
{
int len = vsnprintf( 0, 0, format, va );
+ TIXMLASSERT( len >= 0 );
return len;
}
#define TIXML_SSCANF sscanf
@@ -2105,9 +2108,10 @@
vfprintf( _fp, format, va );
}
else {
- int len = TIXML_VSCPRINTF( format, va );
+ const int len = TIXML_VSCPRINTF( format, va );
// Close out and re-start the va-args
va_end( va );
+ TIXMLASSERT( len >= 0 );
va_start( va, format );
TIXMLASSERT( _buffer.Size() > 0 && _buffer[_buffer.Size() - 1] == 0 );
char* p = _buffer.PushArr( len ) - 1; // back up over the null terminator.