Don't use -1 as buffer length
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index fde1801..6fbbf16 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -2041,12 +2041,16 @@
#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
#if defined(WINCE)
int len = 512;
- do {
+ for (;;) {
len = len*2;
char* str = new char[len]();
- len = _vsnprintf(str, len, format, va);
+ const int required = _vsnprintf(str, len, format, va);
delete[] str;
- }while (len < 0);
+ if ( required != -1 ) {
+ len = required;
+ break;
+ }
+ }
#else
int len = _vscprintf( format, va );
#endif