kconfig: fix line number in recursive inclusion error message

When recursive inclusion is detected, the line number of the last
'included from:' is wrong.

[Test Case]

Kconfig:
  -------->8--------
  source "Kconfig2"
  -------->8--------

Kconfig2:
  -------->8--------
  source "Kconfig3"
  -------->8--------

Kconfig3:
  -------->8--------
  source "Kconfig"
  -------->8--------

[Result]

  $ make allyesconfig
  scripts/kconfig/conf  --allyesconfig Kconfig
  Kconfig:1: recursive inclusion detected. Inclusion path:
    current file : 'Kconfig'
    included from: 'Kconfig3:1'
    included from: 'Kconfig2:1'
    included from: 'Kconfig:3'
  scripts/kconfig/Makefile:89: recipe for target 'allyesconfig' failed
  make[1]: *** [allyesconfig] Error 1
  Makefile:512: recipe for target 'allyesconfig' failed
  make: *** [allyesconfig] Error 2

where we expect

    current file : 'Kconfig'
    included from: 'Kconfig3:1'
    included from: 'Kconfig2:1'
    included from: 'Kconfig:1'

The 'iter->lineno+1' in the second fpinrtf() should be 'iter->lineno-1'.
I refactored the code to merge the two fprintf() calls.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Ulf Magnusson <ulfalizer@gmail.com>
This commit is contained in:
Masahiro Yamada 2018-03-02 16:05:12 +09:00
parent a11761c2dd
commit 5ae6fcc4bb

View File

@ -332,16 +332,12 @@ void zconf_nextfile(const char *name)
"Inclusion path:\n current file : '%s'\n", "Inclusion path:\n current file : '%s'\n",
zconf_curname(), zconf_lineno(), zconf_curname(), zconf_lineno(),
zconf_curname()); zconf_curname());
iter = current_file->parent; iter = current_file;
while (iter && \ do {
strcmp(iter->name,current_file->name)) {
fprintf(stderr, " included from: '%s:%d'\n",
iter->name, iter->lineno-1);
iter = iter->parent; iter = iter->parent;
}
if (iter)
fprintf(stderr, " included from: '%s:%d'\n", fprintf(stderr, " included from: '%s:%d'\n",
iter->name, iter->lineno+1); iter->name, iter->lineno - 1);
} while (strcmp(iter->name, current_file->name));
exit(1); exit(1);
} }
} }