Procházet zdrojové kódy

frontend_common: Add special config case for unmapped windows network drives

Normally we save paths with '/' as the delimiter for each segment but when you manually select a network drive instead of using a mapped location, this would break. This ensures that if the read filesystem location starts with '//', we keep that pattern.
t895 před 2 roky
rodič
revize
f3fe362c93
1 změnil soubory, kde provedl 9 přidání a 1 odebrání
  1. 9 1
      src/frontend_common/config.cpp

+ 9 - 1
src/frontend_common/config.cpp

@@ -856,7 +856,15 @@ std::string Config::AdjustKey(const std::string& key) {
 std::string Config::AdjustOutputString(const std::string& string) {
     std::string adjusted_string(string);
     boost::replace_all(adjusted_string, "\\", "/");
-    boost::replace_all(adjusted_string, "//", "/");
+
+    // Windows requires that two forward slashes are used at the start of a path for unmapped
+    // network drives so we have to watch for that here
+    if (string.substr(0, 2) == "//") {
+        boost::replace_all(adjusted_string, "//", "/");
+        adjusted_string.insert(0, "/");
+    } else {
+        boost::replace_all(adjusted_string, "//", "/");
+    }
 
     // Needed for backwards compatibility with QSettings deserialization
     for (const auto& special_character : special_characters) {