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
This commit is contained in:
		| @@ -1839,19 +1839,22 @@ int wxString::PrintfV(const wxChar* pszFormat, va_list argptr) | |||||||
|         // vsnprintf() may return either -1 (traditional Unix behaviour) or the |         // vsnprintf() may return either -1 (traditional Unix behaviour) or the | ||||||
|         // total number of characters which would have been written if the |         // total number of characters which would have been written if the | ||||||
|         // buffer were large enough |         // buffer were large enough | ||||||
|         // |         if ( len >= 0 && len <= size ) | ||||||
|         // and it may also set errno to EOVERFLOW apparently (which system does |  | ||||||
|         // this?) |  | ||||||
|         if ( (len >= 0 && len <= size) |  | ||||||
| #ifdef EOVERFLOW |  | ||||||
|                 && errno != EOVERFLOW |  | ||||||
| #endif |  | ||||||
|             ) |  | ||||||
|         { |         { | ||||||
|             // ok, there was enough space |             // ok, there was enough space | ||||||
|             break; |             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 |         // still not enough, double it again | ||||||
|         size *= 2; |         size *= 2; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user