- // can use the cast here because the length doesn't change and the string
- // is not shared
- int fdTemp = mkstemp((char *)path.mb_str());
+ // we need to copy the path to the buffer in which mkstemp() can modify it
+ wxCharBuffer buf = wxConvFile.cWX2MB( path );
+
+ // cast is safe because the string length doesn't change
+ int fdTemp = mkstemp( (char*)(const char*) buf );