Fixed ticket #329 (snprintf size is out of bounds when two variables in one scope with similar names)
FIXME: Because it's fix for simplifyTokenList() test should be moved to test/testsimplifytokens.cpp file. http://apps.sourceforge.net/trac/cppcheck/ticket/329
This commit is contained in:
parent
52a8368b02
commit
58781c761c
|
@ -1250,6 +1250,12 @@ void Tokenizer::simplifyTokenList()
|
|||
}
|
||||
}
|
||||
|
||||
else if (Token::Match(tok, "sizeof ( %var% )") && tok->tokAt(2)->varId() > 0)
|
||||
{
|
||||
// don't try to replace size of variable if variable has
|
||||
// similar name with type (#329)
|
||||
}
|
||||
|
||||
else if (Token::Match(tok, "sizeof ( %type% )"))
|
||||
{
|
||||
const char *type = tok->strAt(2);
|
||||
|
|
|
@ -68,6 +68,7 @@ private:
|
|||
|
||||
TEST_CASE(sizeof1);
|
||||
TEST_CASE(sizeof2);
|
||||
TEST_CASE(sizeof3);
|
||||
|
||||
TEST_CASE(array_index_1);
|
||||
TEST_CASE(array_index_2);
|
||||
|
@ -201,8 +202,17 @@ private:
|
|||
ASSERT_EQUALS("[test.cpp:4]: (all) Array index out of bounds\n", errout.str());
|
||||
}
|
||||
|
||||
|
||||
|
||||
void sizeof3()
|
||||
{
|
||||
check("void f()\n"
|
||||
"{\n"
|
||||
" char group[32];\n"
|
||||
" snprintf(group, sizeof(group), \"%u\", 0);\n"
|
||||
" struct group *gr;\n"
|
||||
" snprintf(group, sizeof(group), \"%u\", gr->gr_gid);\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void array_index_1()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue