From a76049acde0d1432643d9f3736d227cd7c7a4cf1 Mon Sep 17 00:00:00 2001 From: Neil Hanlon Date: Wed, 22 Feb 2023 01:26:06 -0500 Subject: [PATCH] Fix bug in setSettingsValue for values constrained between 0 and 1 Fixed a bug in the `setSettingValue` function that caused valid values within the allowed range to be incorrectly constrained to the minimum value, when the default value of the option was zero and the allowed range was from zero to one. The bug was fixed by updating the order of the `if` statements in the function to ensure that the range check is done before the value is set. This ensures that valid values within the range are correctly retained, while out-of-range values are still constrained to the allowed range. --- source/Core/Src/Settings.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/source/Core/Src/Settings.cpp b/source/Core/Src/Settings.cpp index 9d393d23..542a60fb 100644 --- a/source/Core/Src/Settings.cpp +++ b/source/Core/Src/Settings.cpp @@ -140,15 +140,16 @@ void resetSettings() { void setSettingValue(const enum SettingsOptions option, const uint16_t newValue) { const auto constants = settingsConstants[(int)option]; - systemSettings.settingsValues[(int)option] = newValue; - // If less than min, constrain - if (systemSettings.settingsValues[(int)option] < constants.min) { - systemSettings.settingsValues[(int)option] = constants.min; + uint16_t constrainedValue = newValue; + if (constrainedValue < constants.min) { + // If less than min, constrain + constrainedValue = constants.min; } - // If hit max, constrain - if (systemSettings.settingsValues[(int)option] > constants.max) { - systemSettings.settingsValues[(int)option] = constants.max; + else if (constrainedValue > constants.max) { + // If hit max, constrain + constrainedValue = constants.max; } + systemSettings.settingsValues[(int)option] = constrainedValue; } // Lookup wrapper for ease of use (with typing) uint16_t getSettingValue(const enum SettingsOptions option) { return systemSettings.settingsValues[(int)option]; }