From 3487e5037e2076754afc5796c8200e242c239256 Mon Sep 17 00:00:00 2001 From: Florian Bach Date: Sat, 14 Mar 2020 22:27:26 +0100 Subject: [PATCH] Fix settings.txt parsing in case of weird line endings --- Source/Core/Common/SettingsHandler.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Source/Core/Common/SettingsHandler.cpp b/Source/Core/Common/SettingsHandler.cpp index 23c64f1e2a..cac968d502 100644 --- a/Source/Core/Common/SettingsHandler.cpp +++ b/Source/Core/Common/SettingsHandler.cpp @@ -41,7 +41,7 @@ void SettingsHandler::SetBytes(Buffer&& buffer) std::string SettingsHandler::GetValue(std::string_view key) const { - constexpr char delim[] = "\r\n"; + constexpr char delim[] = "\n"; std::string toFind = std::string(delim).append(key).append("="); size_t found = decoded.find(toFind); @@ -80,6 +80,14 @@ void SettingsHandler::Decrypt() str++; m_key = (m_key >> 31) | (m_key << 1); } + + // Decryption done. Now get rid of all CR in the output. + // The decoded file is supposed to contain Windows line endings + // (CR-LF), but sometimes also contains CR-LF-LF endings which + // confuse the parsing code, so let's just get rid of all CR + // line endings. + + decoded.erase(std::remove(decoded.begin(), decoded.end(), '\x0d'), decoded.end()); } void SettingsHandler::Reset()