Use g_rename() instead of ::rename() in Session::cleanup_sources
The paths are in UTF-8 encoding and ::rename expects paths in the system codepage encoding so ::rename will fail for any paths that contain characters that aren't in the system codepage. This fixes Flush Wastebasket on Windows where paths contain characters that aren't in the system codepage(usually most non-ascii characters).
This commit is contained in:
parent
d36c41f128
commit
36d1d842df
@ -3306,7 +3306,7 @@ Session::cleanup_sources (CleanupReport& rep)
|
||||
|
||||
if (0 == g_stat ((*x).c_str(), &statbuf)) {
|
||||
|
||||
if (::rename ((*x).c_str(), newpath.c_str()) != 0) {
|
||||
if (::g_rename ((*x).c_str(), newpath.c_str()) != 0) {
|
||||
error << string_compose (_("cannot rename unused file source from %1 to %2 (%3)"), (*x), newpath, strerror (errno)) << endmsg;
|
||||
continue;
|
||||
}
|
||||
@ -3327,7 +3327,7 @@ Session::cleanup_sources (CleanupReport& rep)
|
||||
peakpath, _path, strerror (errno))
|
||||
<< endmsg;
|
||||
/* try to back out */
|
||||
::rename (newpath.c_str(), _path.c_str());
|
||||
::g_rename (newpath.c_str(), _path.c_str());
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user