projects
/
carl9170fw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
kconfig: Fix defconfig when one choice menu selects options that another choice menu...
[carl9170fw.git]
/
config
/
confdata.c
diff --git
a/config/confdata.c
b/config/confdata.c
index b882b56db09d7da6c2da962aa1d0f9156653efae..bd7a229f15ab26f9008fa83b14bb51346eaa17f0 100644
(file)
--- a/
config/confdata.c
+++ b/
config/confdata.c
@@
-1146,7
+1146,7
@@
static void randomize_choice_values(struct symbol *csym)
csym->flags &= ~(SYMBOL_VALID);
}
csym->flags &= ~(SYMBOL_VALID);
}
-
static
void set_all_choice_values(struct symbol *csym)
+void set_all_choice_values(struct symbol *csym)
{
struct property *prop;
struct symbol *sym;
{
struct property *prop;
struct symbol *sym;
@@
-1163,7
+1163,7
@@
static void set_all_choice_values(struct symbol *csym)
}
csym->flags |= SYMBOL_DEF_USER;
/* clear VALID to get value calculated */
}
csym->flags |= SYMBOL_DEF_USER;
/* clear VALID to get value calculated */
- csym->flags &= ~(SYMBOL_VALID);
+ csym->flags &= ~(SYMBOL_VALID
| SYMBOL_NEED_SET_CHOICE_VALUES
);
}
void conf_set_all_new_symbols(enum conf_def_mode mode)
}
void conf_set_all_new_symbols(enum conf_def_mode mode)
@@
-1265,6
+1265,14
@@
void conf_set_all_new_symbols(enum conf_def_mode mode)
* selected in a choice block and we set it to yes,
* and the rest to no.
*/
* selected in a choice block and we set it to yes,
* and the rest to no.
*/
+ if (mode != def_random) {
+ for_all_symbols(i, csym) {
+ if ((sym_is_choice(csym) && !sym_has_value(csym)) ||
+ sym_is_choice_value(csym))
+ csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;
+ }
+ }
+
for_all_symbols(i, csym) {
if (sym_has_value(csym) || !sym_is_choice(csym))
continue;
for_all_symbols(i, csym) {
if (sym_has_value(csym) || !sym_is_choice(csym))
continue;
@@
-1272,7
+1280,5
@@
void conf_set_all_new_symbols(enum conf_def_mode mode)
sym_calc_value(csym);
if (mode == def_random)
randomize_choice_values(csym);
sym_calc_value(csym);
if (mode == def_random)
randomize_choice_values(csym);
- else
- set_all_choice_values(csym);
}
}
}
}