Skip to contentSkip to conversation

kconfig: Don't go out from read config loop when you read new symbol

PATCH In review Naohiro Aota 2 participants 2 messages Sep 30, 2010

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 kconfig: Don't go out from read config loop when you read new symbol

commit 8baefd30b5b0101aa07aa75da44a9eee881eed28 of linux-next replaced a switch()' statement with some if()' statements, but left break's in the switch()' statement untouched. This cause read config loop to exit and so "make oldconfig" is not much usable (see below).

Quoted 5 lines
$ make oldconfig
<snip>
scripts/kconfig/conf --oldconfig Kconfig
#
# using defaults found in /boot/config-2.6.34-ccs-r1
Quoted 8 lines
#
*
* Restart config...
*
*
* General setup
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [N/y/?] (NEW)

(I've already have "CONFIG_EXPERIMENTAL=y" in the old config file. But that's not read here.)

This patch should fix this problem.

---
 scripts/kconfig/confdata.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
scripts/kconfig/confdata.c +3 -2
index f7d89d7..35c08ec 100644
@@ -234,7 +234,7 @@ load:
 				sym = sym_find(line + 2 + strlen(CONFIG_));
 				if (!sym) {
 					sym_add_change_count(1);
-					break;
+					goto setsym;
 				}
 			} else {
 				sym = sym_lookup(line + 2 + strlen(CONFIG_), 0);
@@ -268,7 +268,7 @@ load:
 				sym = sym_find(line + strlen(CONFIG_));
 				if (!sym) {
 					sym_add_change_count(1);
-					break;
+					goto setsym;
 				}
 			} else {
 				sym = sym_lookup(line + strlen(CONFIG_), 0);
@@ -285,6 +285,7 @@ load:
 				conf_warning("unexpected data");
 			continue;
 		}
+setsym:
 		if (sym && sym_is_choice_value(sym)) {
 			struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
 			switch (sym->def[def].tri) {
Signature · 1 line
1.7.3
#1 lore raw
Quoted 4 lines · Naohiro Aota

commit 8baefd30b5b0101aa07aa75da44a9eee881eed28 of linux-next replaced a switch()' statement with some if()' statements, but left break's in the switch()' statement untouched. This cause read config loop to exit and so "make oldconfig" is not much usable (see below).

Good catch, applied.

Michal