Fixed #1808 (false positive: uninitialized variable with multiple assignment)
This commit is contained in:
parent
7f5239e96c
commit
4668359b51
|
@ -1301,8 +1301,13 @@ void CheckOther::functionVariableUsage()
|
||||||
variables.write(varid1);
|
variables.write(varid1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Token *equal = tok->next();
|
||||||
|
|
||||||
|
if (Token::Match(tok->next(), "[ %any% ]"))
|
||||||
|
equal = tok->tokAt(4);
|
||||||
|
|
||||||
// checked for chained assignments
|
// checked for chained assignments
|
||||||
if (tok != start && tok->next()->str() == "=")
|
if (tok != start && equal->str() == "=")
|
||||||
{
|
{
|
||||||
Variables::VariableUsage *var = variables.find(tok->varId());
|
Variables::VariableUsage *var = variables.find(tok->varId());
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ private:
|
||||||
TEST_CASE(localvar20); // ticket #1799
|
TEST_CASE(localvar20); // ticket #1799
|
||||||
TEST_CASE(localvar21); // ticket #1807
|
TEST_CASE(localvar21); // ticket #1807
|
||||||
TEST_CASE(localvar22); // ticket #1811
|
TEST_CASE(localvar22); // ticket #1811
|
||||||
|
TEST_CASE(localvar23); // ticket #1808
|
||||||
TEST_CASE(localvaralias1);
|
TEST_CASE(localvaralias1);
|
||||||
TEST_CASE(localvaralias2); // ticket #1637
|
TEST_CASE(localvaralias2); // ticket #1637
|
||||||
TEST_CASE(localvaralias3); // ticket #1639
|
TEST_CASE(localvaralias3); // ticket #1639
|
||||||
|
@ -1203,6 +1204,18 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void localvar23() // ticket #1808
|
||||||
|
{
|
||||||
|
functionVariableUsage("int foo(int c)\n"
|
||||||
|
"{\n"
|
||||||
|
" int a;\n"
|
||||||
|
" int b[10];\n"
|
||||||
|
" a = b[c] = 0;\n"
|
||||||
|
" return a;\n"
|
||||||
|
"}");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
void localvaralias1()
|
void localvaralias1()
|
||||||
{
|
{
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
|
|
Loading…
Reference in New Issue