From 36d1d842df5925fe5cbc30083212043fe1877822 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 14 Sep 2016 21:23:02 +1000 Subject: 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). --- libs/ardour/session_state.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libs/ardour') diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 68ab485db7..f518d4e502 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -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; } } -- cgit v1.2.3