History

kconfig: Clear "written" flag to avoid data loss

Prior to this commit, starting nconfig, xconfig or gconfig, and saving the .config file more than once caused data loss, where a .config file that contained only comments would be written to disk starting from the second save operation. This bug manifests itself because the SYMBOL_WRITTEN flag is never cleared after the first call to conf_write, and subsequent calls to conf_write then skip all of the configuration symbols due to the SYMBOL_WRITTEN flag being set. This commit resolves this issue by clearing the SYMBOL_WRITTEN flag from all symbols before conf_write returns.

M. Vefa Bicakci committed 7 years ago

Commit 0c5b6c21 parent e8de12f1 file · +4 −0Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/kconfig/confdata.c+4−0
@@ -848,6 +848,7 @@ int conf_write(const char *name) · 847 unmodified lines
848848 const char *str;
849849 char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];
850850 char *env;
851+ int i;
851852 bool need_newline = false;
852853
853854 if (!name)
@@ -930,6 +931,9 @@ next: · 76 unmodified lines
930931 }
931932 fclose(out);
932933
934+ for_all_symbols(i, sym)
935+ sym->flags &= ~SYMBOL_WRITTEN;
936+
933937 if (*tmpname) {
934938 if (is_same(name, tmpname)) {
935939 conf_message("No change to %s", name);