diff --git a/lib/checkfunctions.cpp b/lib/checkfunctions.cpp index 3076e6d72..2a367bd0a 100644 --- a/lib/checkfunctions.cpp +++ b/lib/checkfunctions.cpp @@ -157,7 +157,7 @@ void CheckFunctions::checkIgnoredReturnValue() const Scope * scope = symbolDatabase->functionScopes[i]; for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) { // c++11 initialization - if (Token::Match(tok, "%var% {")) + if (Token::Match(tok, "%var% (| {")) tok = tok->linkAt(1); if (tok->varId() || !Token::Match(tok, "%name% (") || tok->strAt(-1) == ".") diff --git a/test/testfunctions.cpp b/test/testfunctions.cpp index 4cd73c18c..953042523 100644 --- a/test/testfunctions.cpp +++ b/test/testfunctions.cpp @@ -894,13 +894,18 @@ private: " void * res{malloc(size)};\n" "}"); ASSERT_EQUALS("", errout.str()); - + // #7447 check("void foo() {\n" " int x{mystrcmp(a,b)};\n" "}", "test.cpp", &settings2); ASSERT_EQUALS("", errout.str()); - + + // #7905 + check("void foo() {\n" + " int x({mystrcmp(a,b)});\n" + "}", "test.cpp", &settings2); + ASSERT_EQUALS("", errout.str()); } };