X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c56d73fe00d724fc3bba1eb9e22c584434c0dff4..13ab552e4d5a6fbc443825eadba12d81f2b3f5be:/src/common/string.cpp diff --git a/src/common/string.cpp b/src/common/string.cpp index 2a98946787..78008c79a7 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -1837,15 +1837,29 @@ int wxString::PrintfV(const wxChar* pszFormat, va_list argptr) // buffer were large enough (newer standards such as Unix98) if ( len < 0 ) { +#if wxUSE_WXVSNPRINTF + // we know that our own implementation of wxVsnprintf() returns -1 + // only for a format error - thus there's something wrong with + // the user's format string + return -1; +#else // assume that system version only returns error if not enough space // still not enough, as we don't know how much we need, double the // current size of the buffer size *= 2; +#endif // wxUSE_WXVSNPRINTF/!wxUSE_WXVSNPRINTF } else if ( len >= size ) { +#if wxUSE_WXVSNPRINTF + // we know that our own implementation of wxVsnprintf() returns + // size+1 when there's not enough space but that's not the size + // of the required buffer! + size *= 2; // so we just double the current size of the buffer +#else // some vsnprintf() implementations NUL-terminate the buffer and // some don't in len == size case, to be safe always add 1 size = len + 1; +#endif } else // ok, there was enough space {