fixed wxSnprintf() for Unicode build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -919,19 +919,9 @@ int wxSprintf( wxChar *str, const wxChar *format, ... )
|
||||
va_list argptr;
|
||||
va_start(argptr, format);
|
||||
|
||||
// callers of wxSprintf() deserve what they get
|
||||
//int ret = vswprintf( str, UINT_MAX, wxFormatConverter(format), argptr );
|
||||
|
||||
// ... true, but if we are going to implement it, they probably still
|
||||
// deserve something a little better than absolutely guaranteed silent
|
||||
// failure. For some (very mysterious) reason, this call fails under glibc
|
||||
// 2.3.2 if str was allocated on the heap and maxsize is larger than this.
|
||||
// Even more mysterious is that it does still succeed if str was allocated
|
||||
// on the stack. This should still be plenty large enough for people who
|
||||
// want to overflow a buffer. The bug was first noticed in unicode builds
|
||||
// of tex2rtf, but I'm going to fix that to not use this unsafe function
|
||||
// instead of wasting time diagnosing this further right now.
|
||||
int ret = vswprintf( str, INT_MAX / 4, wxFormatConverter(format), argptr );
|
||||
// note that wxString::Format() uses wxVsnprintf(), not wxSprintf(), so
|
||||
// it's safe to implement this one in terms of it
|
||||
wxStrcpy(str, wxString::Format(format, argptr));
|
||||
|
||||
va_end(argptr);
|
||||
|
||||
|
Reference in New Issue
Block a user