@@ -78,7 +78,7 @@ void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer, const char Fi
7878 const SymbolDatabase* symbolDatabase = tokenizer.getSymbolDatabase ();
7979 for (const Scope* scope : symbolDatabase->functionScopes ) {
8080 const Function* func = scope->function ;
81- if (!func || !func->token || scope-> bodyStart -> fileIndex () != 0 )
81+ if (!func || !func->token )
8282 continue ;
8383
8484 // Don't warn about functions that are marked by __attribute__((constructor)) or __attribute__((destructor))
@@ -95,12 +95,14 @@ void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer, const char Fi
9595 if (!usage.lineNumber )
9696 usage.lineNumber = func->token ->linenr ();
9797
98+ const std::string fileName = tokenizer.list .getFiles ()[func->token ->fileIndex ()];
99+
98100 // No filename set yet..
99101 if (usage.filename .empty ()) {
100- usage.filename = tokenizer. list . getSourceFilePath () ;
102+ usage.filename = fileName ;
101103 }
102104 // Multiple files => filename = "+"
103- else if (usage.filename != tokenizer. list . getSourceFilePath () ) {
105+ else if (usage.filename != fileName ) {
104106 // func.filename = "+";
105107 usage.usedOtherFile |= usage.usedSameFile ;
106108 }
@@ -137,7 +139,7 @@ void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer, const char Fi
137139 mFunctions [markupVarToken->str ()].usedOtherFile = true ;
138140 else if (markupVarToken->next ()->str () == " (" ) {
139141 FunctionUsage &func = mFunctions [markupVarToken->str ()];
140- func.filename = tokenizer.list .getSourceFilePath () ;
142+ func.filename = tokenizer.list .getFiles ()[markupVarToken-> fileIndex ()] ;
141143 if (func.filename .empty () || func.filename == " +" )
142144 func.usedOtherFile = true ;
143145 else
@@ -251,7 +253,7 @@ void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer, const char Fi
251253 if (funcname) {
252254 const auto baseName = stripTemplateParameters (funcname->str ());
253255 FunctionUsage &func = mFunctions [baseName];
254- const std::string& called_from_file = tokenizer.list .getSourceFilePath () ;
256+ const std::string& called_from_file = tokenizer.list .getFiles ()[funcname-> fileIndex ()] ;
255257
256258 if (func.filename .empty () || func.filename == " +" || func.filename != called_from_file)
257259 func.usedOtherFile = true ;
0 commit comments