mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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:
		
							parent
							
								
									a11761c2dd
								
							
						
					
					
						commit
						5ae6fcc4bb
					
				
					 1 changed files with 4 additions and 8 deletions
				
			
		| 
						 | 
					@ -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);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue