wxTempFile bug corrected: the temp file is now created in the same dir
as the original one, so that rename() always succeeds git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@79 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -366,7 +366,20 @@ wxTempFile::wxTempFile(const wxString& strName)
|
|||||||
bool wxTempFile::Open(const wxString& strName)
|
bool wxTempFile::Open(const wxString& strName)
|
||||||
{
|
{
|
||||||
m_strName = strName;
|
m_strName = strName;
|
||||||
m_strTemp = tmpnam(NULL);
|
|
||||||
|
// we want to create the file in the same directory as strName because
|
||||||
|
// otherwise rename() in Commit() might not work (if the files are on
|
||||||
|
// different partitions for example). Unfortunately, the only standard
|
||||||
|
// (POSIX) temp file creation function tmpnam() can't do it.
|
||||||
|
#ifdef __UNIX__
|
||||||
|
static const char *szMktempSuffix = "XXXXXX";
|
||||||
|
m_strTemp << strName << szMktempSuffix;
|
||||||
|
mktemp((char *)m_strTemp.c_str()); // @@@ even if the length doesn't change
|
||||||
|
//m_strTemp.UngetWriteBuf();
|
||||||
|
#else // Windows
|
||||||
|
m_strTemp = tmpnam(NULL);
|
||||||
|
#endif // Windows/Unix
|
||||||
|
|
||||||
return m_file.Open(m_strTemp, wxFile::write);
|
return m_file.Open(m_strTemp, wxFile::write);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user