From 7112d619b4c3c78f9d4a2485acd85a1b8a61edbf Mon Sep 17 00:00:00 2001 From: Igor Pissolati Date: Sun, 4 Jan 2026 16:28:30 -0300 Subject: [PATCH] Fix clang tidy --- src/common/utils/string.hpp | 19 +++++++++++++++++++ src/windows-emulator/process_context.cpp | 6 +++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/common/utils/string.hpp b/src/common/utils/string.hpp index a732217d..65f47fc2 100644 --- a/src/common/utils/string.hpp +++ b/src/common/utils/string.hpp @@ -181,4 +181,23 @@ namespace utils::string { return std::ranges::equal(lhs, rhs, [](const auto c1, const auto c2) { return char_to_lower(c1) == char_to_lower(c2); }); } + + template + requires(std::is_integral_v) + Integer parse_number(const std::basic_string_view str) + { + Integer result = 0; + + for (const auto ch : str) + { + if (ch < u'0' || ch > u'9') + { + break; + } + + result = result * 10 + static_cast(ch - u'0'); + } + + return result; + } } diff --git a/src/windows-emulator/process_context.cpp b/src/windows-emulator/process_context.cpp index a16d2156..13437983 100644 --- a/src/windows-emulator/process_context.cpp +++ b/src/windows-emulator/process_context.cpp @@ -182,17 +182,21 @@ namespace const auto key = registry.get_key({R"(\Registry\Machine\Software\Microsoft\Windows NT\CurrentVersion)"}); if (!key) + { return 0; + } for (size_t i = 0; const auto value = registry.get_value(*key, i); ++i) { if (value->type != REG_SZ) + { continue; + } if (value->name == "CurrentBuildNumber" || value->name == "CurrentBuild") { const auto* s = reinterpret_cast(value->data.data()); - return static_cast(std::wcstoul(reinterpret_cast(s), nullptr, 10)); + return utils::string::parse_number(std::u16string_view(s)); } }