Fixed #809 (Tokenizer: don't replace sizeof() of unknown type to zero)
http://sourceforge.net/apps/trac/cppcheck/ticket/809
This commit is contained in:
parent
b67fe861b8
commit
237dcb9533
|
@ -1435,7 +1435,13 @@ void Tokenizer::simplifySizeof()
|
||||||
Token::Match(tok->tokAt(-2), "[;{}(,] %type% %var% [;),]") ||
|
Token::Match(tok->tokAt(-2), "[;{}(,] %type% %var% [;),]") ||
|
||||||
Token::Match(tok->tokAt(-3), "[;{}(,] const %type% %var% [;),]"))
|
Token::Match(tok->tokAt(-3), "[;{}(,] const %type% %var% [;),]"))
|
||||||
{
|
{
|
||||||
sizeOfVar[varId] = MathLib::toString<long>(sizeOfType(tok->tokAt(-1)));
|
const int size = sizeOfType(tok->previous());
|
||||||
|
if (size <= 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
sizeOfVar[varId] = MathLib::toString<long>(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (Token::Match(tok->tokAt(-1), "%type% %var% [ %num% ] [;=]") ||
|
else if (Token::Match(tok->tokAt(-1), "%type% %var% [ %num% ] [;=]") ||
|
||||||
|
|
|
@ -65,6 +65,7 @@ private:
|
||||||
TEST_CASE(sizeof7);
|
TEST_CASE(sizeof7);
|
||||||
TEST_CASE(sizeof8);
|
TEST_CASE(sizeof8);
|
||||||
TEST_CASE(sizeof9);
|
TEST_CASE(sizeof9);
|
||||||
|
TEST_CASE(sizeof10);
|
||||||
TEST_CASE(casting);
|
TEST_CASE(casting);
|
||||||
|
|
||||||
TEST_CASE(template1);
|
TEST_CASE(template1);
|
||||||
|
@ -775,6 +776,16 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sizeof10()
|
||||||
|
{
|
||||||
|
// ticket #809
|
||||||
|
const char code[] = "int m ; "
|
||||||
|
"compat_ulong_t um ; "
|
||||||
|
"size_t size ; size = sizeof ( m ) / sizeof ( um ) ;";
|
||||||
|
|
||||||
|
ASSERT_EQUALS(code, tok(code));
|
||||||
|
}
|
||||||
|
|
||||||
void casting()
|
void casting()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue