constPointer: Fix false positives when pointer is not read

This commit is contained in:
Daniel Marjamäki 2022-02-12 22:23:25 +01:00
parent 0a99e3b6fc
commit 6427b4888b
2 changed files with 10 additions and 7 deletions

View File

@ -1540,8 +1540,6 @@ void CheckOther::checkConstPointer()
continue;
if (!tok->variable()->isLocal() && !tok->variable()->isArgument())
continue;
if (tok == tok->variable()->nameToken())
continue;
if (!tok->valueType())
continue;
if (tok->valueType()->pointer == 0 || tok->valueType()->constness > 0)
@ -1549,6 +1547,8 @@ void CheckOther::checkConstPointer()
if (nonConstPointers.find(tok->variable()) != nonConstPointers.end())
continue;
pointers.insert(tok->variable());
if (tok == tok->variable()->nameToken())
continue;
const Token *parent = tok->astParent();
bool deref = false;
if (parent && parent->isUnaryOp("*"))

View File

@ -677,10 +677,10 @@ private:
// ticket 5033 segmentation fault (valid code) in CheckOther::checkZeroDivisionOrUselessCondition
check("void f() {\n"
"double* p1= new double[1];\n"
"double* p2= new double[1];\n"
"double* p3= new double[1];\n"
"double* pp[3] = {p1,p2,p3};\n"
" double* p1= new double[1];\n"
" double* p2= new double[1];\n"
" double* p3= new double[1];\n"
" const double* pp[3] = {p1,p2,p3};\n"
"}");
ASSERT_EQUALS("", errout.str());
@ -2778,6 +2778,9 @@ private:
}
void constPointer() {
check("void foo(void* data) {}");
ASSERT_EQUALS("[test.cpp:1]: (style) Parameter 'data' can be declared with const\n", errout.str());
check("void foo(int *p) { return *p; }");
ASSERT_EQUALS("[test.cpp:1]: (style) Parameter 'p' can be declared with const\n", errout.str());
@ -4751,7 +4754,7 @@ private:
ASSERT_EQUALS("", errout.str());
check("void f() {\n"
" std::array<std::array<double,3>,3> array;\n"
" const std::array<std::array<double,3>,3> array;\n"
"}\n");
ASSERT_EQUALS("", errout.str());
}