diff mbox series

[2/3] kconfig: detect recursive inclusion earlier

Message ID 1521738014-18895-2-git-send-email-yamada.masahiro@socionext.com
State New
Headers show
Series [1/3] kconfig: remove duplicated file name and lineno of recursive inclusion | expand

Commit Message

Masahiro Yamada March 22, 2018, 5 p.m. UTC
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 | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

-- 
2.7.4

Comments

Masahiro Yamada March 26, 2018, 3:24 p.m. UTC | #1
2018-03-23 2:00 GMT+09:00 Masahiro Yamada <yamada.masahiro@socionext.com>:
> 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>

> ---


Applied to linux-kbuild/kconfig.


-- 
Best Regards
Masahiro Yamada
diff mbox series

Patch

diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l
index 6f139d2..29b5d33 100644
--- a/scripts/kconfig/zconf.l
+++ b/scripts/kconfig/zconf.l
@@ -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;
 }