diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index c14ade831..9b5e56de4 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -3845,6 +3845,8 @@ static void valueFlowLifetime(TokenList *tokenlist, SymbolDatabase*, ErrorLogger } for (const Token * tok2 = lam.bodyTok; tok2 != lam.bodyTok->link(); tok2 = tok2->next()) { + if (!tok2->variable()) + continue; captureVariable(tok2, lam.implicitCapture, isImplicitCapturingVariable); } diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index 9d69c032e..fd4113554 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -1914,6 +1914,15 @@ private: " return [=, &i] { return j; };\n" "}\n"); ASSERT_EQUALS("", errout.str()); + + check("void f(int*);\n" + "auto g(int y) {\n" + " int x = y;\n" + " return [=] {\n" + " g(&x);\n" + " };\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); } void danglingLifetimeContainer() {