SDLControllerInterface: Don't crash on unbound hat index

This commit is contained in:
Connor McLaughlin 2021-03-08 02:48:18 +10:00
parent 5fff104383
commit 5e0ebb5d5f
1 changed files with 21 additions and 18 deletions

View File

@ -497,25 +497,28 @@ bool SDLControllerInterface::HandleJoystickHatEvent(const SDL_JoyHatEvent* event
bool processed = false;
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][0]; cb)
if (event->hat < it->hat_button_mapping.size())
{
cb(event->value & SDL_HAT_UP);
processed = true;
}
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][1]; cb)
{
cb(event->value & SDL_HAT_RIGHT);
processed = true;
}
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][2]; cb)
{
cb(event->value & SDL_HAT_DOWN);
processed = true;
}
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][3]; cb)
{
cb(event->value & SDL_HAT_LEFT);
processed = true;
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][0]; cb)
{
cb(event->value & SDL_HAT_UP);
processed = true;
}
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][1]; cb)
{
cb(event->value & SDL_HAT_RIGHT);
processed = true;
}
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][2]; cb)
{
cb(event->value & SDL_HAT_DOWN);
processed = true;
}
if (const ButtonCallback& cb = it->hat_button_mapping[event->hat][3]; cb)
{
cb(event->value & SDL_HAT_LEFT);
processed = true;
}
}
return processed;