diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-09-15 09:58:28 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-09-15 09:58:28 +0000 |
commit | 0cfd7a388874f3a95662bcd349bd371d497e59f3 (patch) | |
tree | 91a17531fe001ce2f0e760b5584ff1365420c0b1 | |
parent | 3f08357f2b89277d6196a46b099f7143ef14f223 (diff) | |
download | rockbox-0cfd7a388874f3a95662bcd349bd371d497e59f3.tar.gz rockbox-0cfd7a388874f3a95662bcd349bd371d497e59f3.zip |
Fix FS#12278 - saving a full .cfg file would crash
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30553 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/settings_list.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c index 27726dd391..2f452e6218 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -429,6 +429,8 @@ static int find_setting_by_name(char*name) | |||
429 | { | 429 | { |
430 | int i = 0; | 430 | int i = 0; |
431 | const struct settings_list *setting; | 431 | const struct settings_list *setting; |
432 | if (!strcmp(name, "-")) | ||
433 | return -1; | ||
432 | while (i<nb_settings) | 434 | while (i<nb_settings) |
433 | { | 435 | { |
434 | setting = &settings[i]; | 436 | setting = &settings[i]; |
@@ -446,7 +448,13 @@ static void qs_load_from_cfg(void* var, char*value) | |||
446 | } | 448 | } |
447 | static char* qs_write_to_cfg(void* setting, char*buf, int buf_len) | 449 | static char* qs_write_to_cfg(void* setting, char*buf, int buf_len) |
448 | { | 450 | { |
449 | const struct settings_list *var = &settings[*(int*)setting]; | 451 | int index = *(int*)setting; |
452 | if (index < 0 || index >= nb_settings - 1) | ||
453 | { | ||
454 | strlcpy(buf, "-", buf_len); | ||
455 | return buf; | ||
456 | } | ||
457 | const struct settings_list *var = &settings[index]; | ||
450 | strlcpy(buf, var->cfg_name, buf_len); | 458 | strlcpy(buf, var->cfg_name, buf_len); |
451 | return buf; | 459 | return buf; |
452 | } | 460 | } |