From d09a6514cd30190428c1fa293cc27890012c820f Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 20 Nov 2023 19:43:29 +0100 Subject: [PATCH] Fix #11012 FP unassignedVariable when passed in init list (#5684) --- lib/checkunusedvar.cpp | 2 +- test/testunusedvar.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 812d60aef..161a309c6 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -1090,7 +1090,7 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const } else if (Token::Match(tok->previous(), "[{,] %var% [,}]")) { - variables.read(tok->varId(), tok); + variables.use(tok->varId(), tok); } else if (tok->varId() && Token::Match(tok, "%var% .")) { diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 75ae9b961..fc04d144a 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -176,6 +176,7 @@ private: TEST_CASE(localvararray3); // ticket #3980 TEST_CASE(localvararray4); // ticket #4839 TEST_CASE(localvararray5); // ticket #7092 + TEST_CASE(localvararray6); TEST_CASE(localvarstring1); TEST_CASE(localvarstring2); // ticket #2929 TEST_CASE(localvarconst1); @@ -6059,6 +6060,17 @@ private: ASSERT_EQUALS("[test.cpp:2]: (style) Unused variable: v\n", errout.str()); } + void localvararray6() { + functionVariableUsage("struct S { int* p; };\n" // #11012 + "void g(struct S* ps);\n" + "void f() {\n" + " int i[2];\n" + " struct S s = { i };\n" + " g(&s);\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + } + void localvarstring1() { // ticket #1597 functionVariableUsage("void foo() {\n" " std::string s;\n"