From 6c0b29749cb744ce02f08a528f608a953371d7d3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 4 May 2005 19:32:53 +0000 Subject: [PATCH] fixed EOVERFLOW handlign after previous commit and also explained what's going on git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/string.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/common/string.cpp b/src/common/string.cpp index b626fd228f..be45802169 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -1839,19 +1839,22 @@ int wxString::PrintfV(const wxChar* pszFormat, va_list argptr) // vsnprintf() may return either -1 (traditional Unix behaviour) or the // total number of characters which would have been written if the // buffer were large enough - // - // and it may also set errno to EOVERFLOW apparently (which system does - // this?) - if ( (len >= 0 && len <= size) -#ifdef EOVERFLOW - && errno != EOVERFLOW -#endif - ) + if ( len >= 0 && len <= size ) { // ok, there was enough space break; } +#ifdef EOVERFLOW + // if the error is not due to not having enough space (it could be e.g. + // EILSEQ), break too -- we'd just eat all available memory uselessly + if ( errno != EOVERFLOW ) + { + // no sense in continuing + break; + } +#endif // EOVERFLOW + // still not enough, double it again size *= 2; } -- 2.45.2