(char*)(const char*)xxx.mb_str() is not a good
thing under Unicode. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -634,13 +634,19 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp)
|
|||||||
|
|
||||||
path += name;
|
path += name;
|
||||||
|
|
||||||
|
// Needed for Unicode/Ansi conversion
|
||||||
|
char buf[500];
|
||||||
|
|
||||||
#if defined(HAVE_MKSTEMP)
|
#if defined(HAVE_MKSTEMP)
|
||||||
// scratch space for mkstemp()
|
// scratch space for mkstemp()
|
||||||
path += _T("XXXXXX");
|
path += _T("XXXXXX");
|
||||||
|
|
||||||
// can use the cast here because the length doesn't change and the string
|
#if wxUSE_UNICODE
|
||||||
// is not shared
|
strcpy( buf, wxConvFile.cWC2MB( path ) );
|
||||||
int fdTemp = mkstemp((char*)(const char *)path.mb_str());
|
#else
|
||||||
|
strcpy( buf, path.c_str() );
|
||||||
|
#endif
|
||||||
|
int fdTemp = mkstemp( buf );
|
||||||
if ( fdTemp == -1 )
|
if ( fdTemp == -1 )
|
||||||
{
|
{
|
||||||
// this might be not necessary as mkstemp() on most systems should have
|
// 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
|
else // mkstemp() succeeded
|
||||||
{
|
{
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
path = wxConvFile.cMB2WC( buf );
|
||||||
|
#else
|
||||||
|
path = buf;
|
||||||
|
#endif
|
||||||
// avoid leaking the fd
|
// avoid leaking the fd
|
||||||
if ( fileTemp )
|
if ( fileTemp )
|
||||||
{
|
{
|
||||||
@@ -665,10 +676,23 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp)
|
|||||||
// same as above
|
// same as above
|
||||||
path += _T("XXXXXX");
|
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();
|
path.clear();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
path = wxConvFile.cMB2WC( buf );
|
||||||
|
#else
|
||||||
|
path = buf;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
#else // !HAVE_MKTEMP (includes __DOS__)
|
#else // !HAVE_MKTEMP (includes __DOS__)
|
||||||
// generate the unique file name ourselves
|
// generate the unique file name ourselves
|
||||||
#ifndef __DOS__
|
#ifndef __DOS__
|
||||||
|
Reference in New Issue
Block a user