diff --git a/src/fs/Charset.cxx b/src/fs/Charset.cxx
index cbfe6ea3edf1484f0a770807b7fe971077fe0ab5..5532a2cb6a1b0824e233860a373092229021e7d1 100644
--- a/src/fs/Charset.cxx
+++ b/src/fs/Charset.cxx
@@ -73,7 +73,8 @@ GetFSCharset()
 #endif
 }
 
-static inline void FixSeparators(std::string &s)
+static inline std::string &&
+FixSeparators(std::string &&s)
 {
 #ifdef WIN32
 	// For whatever reason GCC can't convert constexpr to value reference.
@@ -81,9 +82,8 @@ static inline void FixSeparators(std::string &s)
 	auto from = PathTraitsFS::SEPARATOR;
 	auto to = PathTraitsUTF8::SEPARATOR;
 	std::replace(s.begin(), s.end(), from, to);
-#else
-	(void)s;
 #endif
+	return std::move(s);
 }
 
 std::string
@@ -95,17 +95,12 @@ PathToUTF8(const char *path_fs)
 #endif
 
 #ifdef HAVE_FS_CHARSET
-	if (fs_converter == nullptr) {
+	if (fs_converter == nullptr)
 #endif
-		auto result = std::string(path_fs);
-		FixSeparators(result);
-		return result;
+		return FixSeparators(path_fs);
 #ifdef HAVE_FS_CHARSET
-	}
 
-	auto result_path = fs_converter->ToUTF8(path_fs);
-	FixSeparators(result_path);
-	return result_path;
+	return FixSeparators(fs_converter->ToUTF8(path_fs));
 #endif
 }