summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-08-24 16:12:45 +0000
committerThomas Martitz <kugel@rockbox.org>2009-08-24 16:12:45 +0000
commit1747a33fcc9ceb8b78012d662086aeac51490812 (patch)
tree5e0fba76d959df68cb1ec73cd59dcdb24b0696d6
parentaf68987d5cbe538a738ce7be0c99d83792fc7269 (diff)
downloadrockbox-1747a33fcc9ceb8b78012d662086aeac51490812.tar.gz
rockbox-1747a33fcc9ceb8b78012d662086aeac51490812.tar.bz2
rockbox-1747a33fcc9ceb8b78012d662086aeac51490812.zip
Fix a problem spotted in FS#10543. For F_CHOICE_SETTING, an invalid value would (which may happen if the values changed e.g. due to the statusbar at bottom addition) lead to the correspong 0 value, instead of leaving the setting untouched. Fix it by not calling atoi() for F_CHOICE_SETTING (they don't have int-like values).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22499 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/settings.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 98cd6ebc95..4c16c6a0ec 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -308,7 +308,13 @@ bool settings_load_config(const char* file, bool apply)
*v = temp;
}
else
- *v = atoi(value);
+ { /* atoi breaks choice settings because they
+ * don't have int-like values, and would
+ * fall back to the first value (i.e. 0)
+ * due to atoi */
+ if (!(settings[i].flags&F_CHOICE_SETTING))
+ *v = atoi(value);
+ }
}
break;
case F_T_BOOL: