From a19a0096db4bbee3b7ae6411c0b6e801c091783e Mon Sep 17 00:00:00 2001 From: Filoppi Date: Wed, 5 May 2021 00:01:20 +0300 Subject: [PATCH] InputCommon: improve code that returns a controller attachment index casting a value to a u32 when it's originally an int, and it's exposed as int to users, could end up in cases where a negative number would result as a positive one. This doesn't really affect the value range of the attachment enum, still I think the code was wrong. Heavily tested. --- .../InputCommon/ControllerEmu/ControlGroup/Attachments.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.cpp index 6f980d8c60..18ccbc1966 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.cpp @@ -17,10 +17,11 @@ void Attachments::AddAttachment(std::unique_ptr att) u32 Attachments::GetSelectedAttachment() const { - const u32 value = m_selection_value.GetValue(); + // This is originally an int, treat it as such + const int value = m_selection_value.GetValue(); - if (value < m_attachments.size()) - return value; + if (value > 0 && static_cast(value) < m_attachments.size()) + return u32(value); return 0; }