Fixed #1807 (false positive: Variable is not assigned a value (casting function parameters))

This commit is contained in:
Robert Reif 2010-06-22 17:04:11 +02:00 committed by Daniel Marjamäki
parent d22da6088c
commit a5b45a7f83
2 changed files with 14 additions and 0 deletions

View File

@ -1325,6 +1325,9 @@ void CheckOther::functionVariableUsage()
variables.use(tok->next()->varId()); // use = read + write variables.use(tok->next()->varId()); // use = read + write
else if (Token::Match(tok, "[(,] %var% [,)]") && tok->previous()->str() != "*") else if (Token::Match(tok, "[(,] %var% [,)]") && tok->previous()->str() != "*")
variables.use(tok->next()->varId()); // use = read + write variables.use(tok->next()->varId()); // use = read + write
else if (Token::Match(tok, "[(,] (") &&
Token::Match(tok->next()->link(), ") %var% [,)]"))
variables.use(tok->next()->link()->next()->varId()); // use = read + write
// function // function
else if (Token::Match(tok, " %var% (")) else if (Token::Match(tok, " %var% ("))

View File

@ -66,6 +66,7 @@ private:
TEST_CASE(localvar18); // ticket #1723 TEST_CASE(localvar18); // ticket #1723
TEST_CASE(localvar19); // ticket #1776 TEST_CASE(localvar19); // ticket #1776
TEST_CASE(localvar20); // ticket #1799 TEST_CASE(localvar20); // ticket #1799
TEST_CASE(localvar21); // ticket #1807
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
@ -1177,6 +1178,16 @@ private:
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
} }
void localvar21() // ticket #1807
{
functionVariableUsage("void foo()\n"
"{\n"
" char buffer[1024];\n"
" bar((void *)buffer);\n"
"}");
ASSERT_EQUALS("", errout.str());
}
void localvaralias1() void localvaralias1()
{ {
functionVariableUsage("void foo()\n" functionVariableUsage("void foo()\n"