uninitStructMember: Fixed FP shown in daca@home

This commit is contained in:
Daniel Marjamäki 2019-06-02 20:19:53 +02:00
parent 7a3302b3e3
commit 7ca35d181b
2 changed files with 12 additions and 2 deletions

View File

@ -1225,9 +1225,12 @@ bool CheckUninitVar::isMemberVariableUsage(const Token *tok, bool isPointer, All
if (isMemberVariableAssignment(tok, membervar)) if (isMemberVariableAssignment(tok, membervar))
return false; return false;
if (Token::Match(tok, "%name% . %name%") && tok->strAt(2) == membervar && !(tok->tokAt(-2)->variable() && tok->tokAt(-2)->variable()->isReference())) if (Token::Match(tok, "%name% . %name%") && tok->strAt(2) == membervar && !(tok->tokAt(-2)->variable() && tok->tokAt(-2)->variable()->isReference())) {
const Token *parent = tok->next()->astParent();
if (parent && parent->isUnaryOp("&"))
return false;
return true; return true;
else if (!isPointer && Token::Match(tok->previous(), "[(,] %name% [,)]") && isVariableUsage(tok, isPointer, alloc)) } else if (!isPointer && Token::Match(tok->previous(), "[(,] %name% [,)]") && isVariableUsage(tok, isPointer, alloc))
return true; return true;
else if (!isPointer && Token::Match(tok->previous(), "= %name% ;")) else if (!isPointer && Token::Match(tok->previous(), "= %name% ;"))

View File

@ -3358,6 +3358,13 @@ private:
"[test.cpp:5]: (error) Uninitialized struct member: abc.b\n" "[test.cpp:5]: (error) Uninitialized struct member: abc.b\n"
"[test.cpp:5]: (error) Uninitialized struct member: abc.c\n", errout.str()); "[test.cpp:5]: (error) Uninitialized struct member: abc.c\n", errout.str());
checkUninitVar("struct ABC { int a; int b; int c; };\n"
"void foo() {\n"
" struct ABC abc;\n"
" dostuff((uint32_t *)&abc.a);\n"
"}");
ASSERT_EQUALS("", errout.str());
// return // return
checkUninitVar("struct AB { int a; int b; };\n" checkUninitVar("struct AB { int a; int b; };\n"
"void f(void) {\n" "void f(void) {\n"