(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:
Robert Roebling
2002-08-10 14:41:37 +00:00
parent a59c124d06
commit aed08d7967

View File

@@ -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__