aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kconfig/symbol.c
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2005-11-09 00:34:48 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-09 10:55:53 -0500
commit3f23ca2b37d13a89bb6cd0421821fc9c3b8ccd47 (patch)
tree134efbc253baa6aef5c2a39ffc4c5ab66dba7902 /scripts/kconfig/symbol.c
parent3f04e7ddf47a1c821dfaa886161d94774af583fa (diff)
[PATCH] kconfig: fix restart for choice symbols
The restart check whether new symbols became visible, didn't always work for choice symbols. Even if a choice symbol itself isn't changable, the childs are. This also requires to update the new status of all choice values, once one of them is set. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'scripts/kconfig/symbol.c')
-rw-r--r--scripts/kconfig/symbol.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index 10d96c4188dd..29bff43adc5e 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -380,11 +380,22 @@ bool sym_set_tristate_value(struct symbol *sym, tristate val)
380 sym->flags &= ~SYMBOL_NEW; 380 sym->flags &= ~SYMBOL_NEW;
381 sym_set_changed(sym); 381 sym_set_changed(sym);
382 } 382 }
383 /*
384 * setting a choice value also resets the new flag of the choice
385 * symbol and all other choice values.
386 */
383 if (sym_is_choice_value(sym) && val == yes) { 387 if (sym_is_choice_value(sym) && val == yes) {
384 struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); 388 struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
389 struct property *prop;
390 struct expr *e;
385 391
386 cs->user.val = sym; 392 cs->user.val = sym;
387 cs->flags &= ~SYMBOL_NEW; 393 cs->flags &= ~SYMBOL_NEW;
394 prop = sym_get_choice_prop(cs);
395 for (e = prop->expr; e; e = e->left.expr) {
396 if (e->right.sym->visible != no)
397 e->right.sym->flags &= ~SYMBOL_NEW;
398 }
388 } 399 }
389 400
390 sym->user.tri = val; 401 sym->user.tri = val;