mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
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.
This commit is contained in:
@@ -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]; }
|
||||
|
||||
Reference in New Issue
Block a user