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
848 const char *str;848 const char *str;
849 char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];849 char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];
850 char *env;850 char *env;
851 int i;
851 bool need_newline = false;852 bool need_newline = false;
852 853
853 if (!name)854 if (!name)
@@ -930,6 +931,9 @@ next: · 76 unmodified lines
930 }931 }
931 fclose(out);932 fclose(out);
932 933
934 for_all_symbols(i, sym)
935 sym->flags &= ~SYMBOL_WRITTEN;
936
933 if (*tmpname) {937 if (*tmpname) {
934 if (is_same(name, tmpname)) {938 if (is_same(name, tmpname)) {
935 conf_message("No change to %s", name);939 conf_message("No change to %s", name);