From 48e6b21edaefa6c513b6858980309bc9fa04fc1a Mon Sep 17 00:00:00 2001 From: Anonymous275 <36374260+Anonymous-275@users.noreply.github.com> Date: Wed, 19 Jan 2022 01:31:43 +0200 Subject: [PATCH] fixed count forcing null byte at the end of query string --- include/Launcher.h | 1 + src/Launcher.cpp | 8 ++++---- src/Network/Update.cpp | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/Launcher.h b/include/Launcher.h index ac69923..902e36e 100644 --- a/include/Launcher.h +++ b/include/Launcher.h @@ -14,6 +14,7 @@ struct VersionParser { explicit VersionParser(const std::string& from_string); std::strong_ordering operator<=>(VersionParser const& rhs) const noexcept; bool operator==(VersionParser const& rhs) const noexcept; + std::vector split; std::vector data; }; diff --git a/src/Launcher.cpp b/src/Launcher.cpp index 4dc114f..2306ab0 100644 --- a/src/Launcher.cpp +++ b/src/Launcher.cpp @@ -50,7 +50,7 @@ std::string QueryValue(HKEY& hKey, const char* Name) { DWORD keySize; BYTE buffer[16384]; if(RegQueryValueExA(hKey, Name, nullptr, nullptr, buffer, &keySize) == ERROR_SUCCESS) { - return {(char*)buffer, keySize}; + return {(char*)buffer, keySize-1}; } return {}; } @@ -62,7 +62,7 @@ std::string Launcher::GetLocalAppdata() { if(!Path.empty()) { Path += "\\BeamNG.drive\\"; VersionParser GameVer(BeamVersion); - Path += std::to_string(GameVer.data[0]) + '.' + std::to_string(GameVer.data[1]) + '\\'; + Path += GameVer.split[0] + '.' + GameVer.split[1] + '\\'; return Path; } } @@ -78,9 +78,9 @@ void Launcher::QueryRegistry() { RegCloseKey(BeamNG); if(BeamUserPath.empty() && !BeamVersion.empty()) { BeamUserPath = GetLocalAppdata(); - } else if(!BeamUserPath.empty()) { + } else if(!BeamUserPath.empty() && !BeamVersion.empty()) { VersionParser GameVer(BeamVersion); - BeamUserPath += std::to_string(GameVer.data[0]) + '.' + std::to_string(GameVer.data[1]) + '\\'; + BeamUserPath += GameVer.split[0] + '.' + GameVer.split[1] + '\\'; } if(!BeamRoot.empty() && !BeamVersion.empty() && !BeamUserPath.empty())return; } diff --git a/src/Network/Update.cpp b/src/Network/Update.cpp index eaf2734..0eb5ab4 100644 --- a/src/Network/Update.cpp +++ b/src/Network/Update.cpp @@ -12,6 +12,7 @@ VersionParser::VersionParser(const std::string &from_string) { std::istringstream tokenStream(from_string); while (std::getline(tokenStream, token, '.')) { data.emplace_back(std::stol(token)); + split.emplace_back(token); } }