diff options
author | Masahiro Yamada | 2023-11-06 03:10:47 +0900 |
---|---|---|
committer | Masahiro Yamada | 2023-11-28 11:22:50 +0900 |
commit | ce1fc9345a59c55d3a46dd7da872791cae41324e (patch) | |
tree | 806fd050b7452f348094e6da1a209294e0e53698 /scripts/kconfig | |
parent | 96a29581e735bcf3b4e5a4f2daad9f445025f510 (diff) |
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>
Diffstat (limited to 'scripts/kconfig')
-rw-r--r-- | scripts/kconfig/confdata.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 4a6811d77d18..7fca9cc3ae74 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -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: |