Fixed #4760 (false negative: (error) usage of uninitialized variable (struct member))
This commit is contained in:
parent
957e0790c6
commit
bfb1bc50e3
|
@ -1616,6 +1616,8 @@ bool CheckUninitVar::isMemberVariableAssignment(const Token *tok, const std::str
|
|||
return true;
|
||||
else if ((tok->previous() && tok->previous()->isConstOp()) || Token::Match(tok->previous(), "[|="))
|
||||
; // member variable usage
|
||||
else if (tok->tokAt(3)->isConstOp())
|
||||
; // member variable usage
|
||||
else
|
||||
return true;
|
||||
} else if (tok->strAt(1) == "=")
|
||||
|
|
|
@ -2713,6 +2713,13 @@ private:
|
|||
"}\n", "test.c");
|
||||
ASSERT_EQUALS("[test.c:9]: (error) Uninitialized struct member: fred.b\n", errout.str());
|
||||
|
||||
checkUninitVar2("struct Fred { int a; };\n"
|
||||
"void f() {\n"
|
||||
" struct Fred fred;\n"
|
||||
" if (fred.a==1) {}\n"
|
||||
"}", "test.c");
|
||||
ASSERT_EQUALS("[test.c:4]: (error) Uninitialized struct member: fred.a\n", errout.str());
|
||||
|
||||
checkUninitVar2("struct S { int n; int m; };\n"
|
||||
"void f(void) {\n"
|
||||
" struct S s;\n"
|
||||
|
|
Loading…
Reference in New Issue