From f3fe362c93efff124c4ef0a005cdcd1cd635f8f5 Mon Sep 17 00:00:00 2001
From: t895 <clombardo169@gmail.com>
Date: Sun, 19 Nov 2023 12:24:43 -0500
Subject: [PATCH] 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.
---
 src/frontend_common/config.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/frontend_common/config.cpp b/src/frontend_common/config.cpp
index 8eb62e8ef..b3f4a54a4 100644
--- a/src/frontend_common/config.cpp
+++ b/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) {