13
0

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:
Tim Mayberry 2016-09-14 21:23:02 +10:00
parent d36c41f128
commit 36d1d842df

View File

@ -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;
}
}