]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
kconfig: detect recursive inclusion earlier
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 22 Mar 2018 17:00:13 +0000 (02:00 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Sun, 25 Mar 2018 17:04:07 +0000 (02:04 +0900)
Currently, the recursive inclusion is not detected when the offending
file is about to be included; it is detected the offending file is
about to include the *next* file.  This is because the detection loop
does not involve the file being included.

Do this check against the file that is about to be included so that
the recursive inclusion is detected before unneeded parsing happens.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
scripts/kconfig/zconf.l

index 6f139d2dc65a7e8c8e69e2bcd65af28ba8dfbeee..29b5d338d6bc713f5addf44c5e493d232972ae33 100644 (file)
@@ -325,23 +325,25 @@ void zconf_nextfile(const char *name)
        buf->parent = current_buf;
        current_buf = buf;
 
-       for (iter = current_file->parent; iter; iter = iter->parent ) {
-               if (!strcmp(current_file->name,iter->name) ) {
+       file->parent = current_file;
+
+       for (iter = current_file; iter; iter = iter->parent) {
+               if (!strcmp(iter->name, file->name)) {
                        fprintf(stderr,
                                "Recursive inclusion detected.\n"
                                "Inclusion path:\n"
-                               "  current file : %s\n", zconf_curname());
-                       iter = current_file;
+                               "  current file : %s\n", file->name);
+                       iter = file;
                        do {
                                iter = iter->parent;
                                fprintf(stderr, "  included from: %s:%d\n",
                                        iter->name, iter->lineno - 1);
-                       } while (strcmp(iter->name, current_file->name));
+                       } while (strcmp(iter->name, file->name));
                        exit(1);
                }
        }
+
        file->lineno = 1;
-       file->parent = current_file;
        current_file = file;
 }