diff options
| author | JMC47 <JMC4789@gmail.com> | 2026-01-11 15:41:03 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-11 15:41:03 -0500 |
| commit | 79255f550dd39664397ac448191ace05a74bf6b2 (patch) | |
| tree | dade25a96fd25243156fd2b1748688048d068c81 | |
| parent | e065b34a6470af3c37b77ab95a7bda7d4219a997 (diff) | |
| parent | 3c771ade4b40e201410a3b46e70cb40ff352563e (diff) | |
Merge pull request #14275 from JosJuice/hotkey-vector
HotkeyManager: Don't allocate heap memory in GetInput
| -rw-r--r-- | Source/Core/Core/HotkeyManager.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/Source/Core/Core/HotkeyManager.cpp b/Source/Core/Core/HotkeyManager.cpp index a7358847fa..8a115bb6e2 100644 --- a/Source/Core/Core/HotkeyManager.cpp +++ b/Source/Core/Core/HotkeyManager.cpp @@ -11,6 +11,7 @@ #include <fmt/format.h> #include <fmt/ranges.h> +#include "Common/Assert.h" #include "Common/Common.h" #include "Common/CommonTypes.h" #include "Common/FileUtil.h" @@ -360,17 +361,18 @@ InputConfig* HotkeyManager::GetConfig() const void HotkeyManager::GetInput(HotkeyStatus* kb, bool ignore_focus) { + std::array<u32, 32> bitmasks; + for (size_t key = 0; key < bitmasks.size(); key++) + bitmasks[key] = static_cast<u32>(1 << key); + const auto lock = GetStateLock(); for (std::size_t group = 0; group < s_groups_info.size(); group++) { if (s_groups_info[group].ignore_focus != ignore_focus) continue; - const int group_count = (s_groups_info[group].last - s_groups_info[group].first) + 1; - std::vector<u32> bitmasks(group_count); - for (size_t key = 0; key < bitmasks.size(); key++) - bitmasks[key] = static_cast<u32>(1 << key); - + const size_t group_count = (s_groups_info[group].last - s_groups_info[group].first) + 1; + ASSERT(group_count <= bitmasks.size()); kb->button[group] = 0; m_keys[group]->GetState(&kb->button[group], bitmasks.data()); } |
