X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/92980e9076469956e1e2cb94df97d0f8d873114a..83afe21166ad23a402185eef5dd47782597e8f91:/src/common/filename.cpp diff --git a/src/common/filename.cpp b/src/common/filename.cpp index b639fda809..db24f8040f 100644 --- a/src/common/filename.cpp +++ b/src/common/filename.cpp @@ -634,13 +634,19 @@ 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"); - // can use the cast here because the length doesn't change and the string - // is not shared - int fdTemp = mkstemp((char*)(const char *)path.mb_str()); +#if wxUSE_UNICODE + strcpy( buf, wxConvFile.cWC2MB( path ) ); +#else + strcpy( buf, path.c_str() ); +#endif + int fdTemp = mkstemp( buf ); if ( fdTemp == -1 ) { // this might be not necessary as mkstemp() on most systems should have @@ -649,6 +655,11 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp) } else // mkstemp() succeeded { +#if wxUSE_UNICODE + path = wxConvFile.cMB2WC( buf ); +#else + path = buf; +#endif // avoid leaking the fd if ( fileTemp ) { @@ -665,10 +676,23 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp) // same as above path += _T("XXXXXX"); - if ( !mktemp((char *)path.mb_str()) ) +#if wxUSE_UNICODE + strcpy( buf, wxConvFile.cWC2MB( path ) ); +#else + strcpy( buf, path.c_str() ); +#endif + if ( !mktemp( buf ) { path.clear(); } + else + { +#if wxUSE_UNICODE + path = wxConvFile.cMB2WC( buf ); +#else + path = buf; +#endif + } #else // !HAVE_MKTEMP (includes __DOS__) // generate the unique file name ourselves #ifndef __DOS__