summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2026-01-11 15:41:03 -0500
committerGitHub <noreply@github.com>2026-01-11 15:41:03 -0500
commit79255f550dd39664397ac448191ace05a74bf6b2 (patch)
treedade25a96fd25243156fd2b1748688048d068c81
parente065b34a6470af3c37b77ab95a7bda7d4219a997 (diff)
parent3c771ade4b40e201410a3b46e70cb40ff352563e (diff)
Merge pull request #14275 from JosJuice/hotkey-vector
HotkeyManager: Don't allocate heap memory in GetInput
-rw-r--r--Source/Core/Core/HotkeyManager.cpp12
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());
}