Skip to content

Commit b599bb4

Browse files
Fix #14635 FN unusedVariable for array of pointers (danmar#8402)
1 parent 82d3a80 commit b599bb4

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

lib/checkunusedvar.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,9 @@ static const Token* doAssignment(Variables &variables, const Token *tok, bool de
424424
Variables::VariableUsage *var1 = variables.find(varid1);
425425

426426
if (var1) {
427+
if (var1->mType == Variables::pointerArray)
428+
variables.use(varid1, tok);
429+
427430
// jump behind '='
428431
tok = tok->next();
429432
while (!tok->isAssignmentOp()) {
@@ -567,8 +570,10 @@ static const Token* doAssignment(Variables &variables, const Token *tok, bool de
567570
} else if (var1->mType == Variables::standard && addressOf) {
568571
variables.alias(varid1, varid2, true);
569572
} else {
570-
if ((var2->mType == Variables::pointer || var2->mType == Variables::pointerArray) && tok->strAt(1) == "[")
573+
if (var2->mType == Variables::pointer || var2->mType == Variables::pointerArray) {
574+
variables.alias(varid1, varid2, true);
571575
variables.readAliases(varid2, tok);
576+
}
572577

573578
variables.read(varid2, tok);
574579
}
@@ -1393,7 +1398,6 @@ void CheckUnusedVar::checkFunctionVariableUsage()
13931398

13941399
// skip things that are only partially implemented to prevent false positives
13951400
if (usage.mType == Variables::pointerPointer ||
1396-
usage.mType == Variables::pointerArray ||
13971401
usage.mType == Variables::referenceArray)
13981402
continue;
13991403

test/testunusedvar.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2876,25 +2876,25 @@ class TestUnusedVar : public TestFixture {
28762876
"{\n"
28772877
" int * i[2];\n"
28782878
"}");
2879-
TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str());
2879+
ASSERT_EQUALS("[test.cpp:3:11]: (style) Unused variable: i [unusedVariable]\n", errout_str());
28802880

28812881
functionVariableUsage("void foo()\n"
28822882
"{\n"
28832883
" const int * i[2];\n"
28842884
"}");
2885-
TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str());
2885+
ASSERT_EQUALS("[test.cpp:3:17]: (style) Unused variable: i [unusedVariable]\n", errout_str());
28862886

28872887
functionVariableUsage("void foo()\n"
28882888
"{\n"
28892889
" void * i[2];\n"
28902890
"}");
2891-
TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str());
2891+
ASSERT_EQUALS("[test.cpp:3:12]: (style) Unused variable: i [unusedVariable]\n", errout_str());
28922892

28932893
functionVariableUsage("void foo()\n"
28942894
"{\n"
28952895
" const void * i[2];\n"
28962896
"}");
2897-
TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str());
2897+
ASSERT_EQUALS("[test.cpp:3:18]: (style) Unused variable: i [unusedVariable]\n", errout_str());
28982898

28992899
functionVariableUsage("void foo()\n"
29002900
"{\n"

0 commit comments

Comments
 (0)