kconfig: do not clear SYMBOL_DEF_USER when the value is out of range
When a user-supplied value is out of range, (NEW) and an incorrect default value are shown. [Test Kconfig] config FOO int "foo" range 10 20 [Test .config] CONFIG_FOO=30 [Result without this fix] $ make config * * Main menu * foo (FOO) [10] (NEW) [Result with this fix] $ make config * * Main menu * foo (FOO) [20] Currently, the SYMBOL_DEF_USER is cleared if the user input does not reside within the range. Kconfig forgets the initial value 30, and prints (NEW) and an incorrect default [10]. Kconfig should remember the user's input. The default should be [20] because the user's input, 30, is closer to the upper limit of the range. Please note it will not show up in "make oldconfig" because it is no longer considered as a new symbol. It also fixes the inconsistent behavior in listnewconfig/helpnewconfig. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
parent
96a29581e7
commit
ce1fc9345a
|
@ -594,7 +594,7 @@ int conf_read(const char *name)
|
|||
/* Reset a string value if it's out of range */
|
||||
if (sym_string_within_range(sym, sym->def[S_DEF_USER].val))
|
||||
break;
|
||||
sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER);
|
||||
sym->flags &= ~SYMBOL_VALID;
|
||||
conf_unsaved++;
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue