Fixed size buffers are not a good thing. Period.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2002-08-13 23:16:25 +00:00
parent f0a0d77e35
commit 74cf9763b4

View File

@ -634,19 +634,15 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp)
path += name;
// Needed for Unicode/Ansi conversion
char buf[500];
#if defined(HAVE_MKSTEMP)
// scratch space for mkstemp()
path += _T("XXXXXX");
#if wxUSE_UNICODE
strcpy( buf, wxConvFile.cWC2MB( path ) );
#else
strcpy( buf, path.c_str() );
#endif
int fdTemp = mkstemp( buf );
// we need to copy the path to the buffer in which mkstemp() can modify it
wxCharBuffer buf(path.fn_str());
// cast is safe because the string length doesn't change
int fdTemp = mkstemp( (char *)buf.data() );
if ( fdTemp == -1 )
{
// this might be not necessary as mkstemp() on most systems should have
@ -655,11 +651,8 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp)
}
else // mkstemp() succeeded
{
#if wxUSE_UNICODE
path = wxConvFile.cMB2WC( buf );
#else
path = buf;
#endif
path = wxConvFile.cMB2WX(buf);
// avoid leaking the fd
if ( fileTemp )
{
@ -676,22 +669,14 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp)
// same as above
path += _T("XXXXXX");
#if wxUSE_UNICODE
strcpy( buf, wxConvFile.cWC2MB( path ) );
#else
strcpy( buf, path.c_str() );
#endif
if ( !mktemp( buf )
wxCharBuffer buf(path.fn_str());
if ( !mktemp( buf ) )
{
path.clear();
}
else
{
#if wxUSE_UNICODE
path = wxConvFile.cMB2WC( buf );
#else
path = buf;
#endif
path = wxConvFile.cMB2WX(buf);
}
#else // !HAVE_MKTEMP (includes __DOS__)
// generate the unique file name ourselves
@ -1769,7 +1754,7 @@ static void MacEnsureDefaultExtensionsLoaded()
{
if ( !gMacDefaultExtensionsInited )
{
// load the default extensions
MacDefaultExtensionRecord defaults[1] =
{