Fix #713 (Tokenizer: Simplify 0L)
http://sourceforge.net/apps/trac/cppcheck/ticket/713 Use MathLib to handle other variations of 0.
This commit is contained in:
parent
832481b36e
commit
62ccda5677
|
@ -1699,11 +1699,17 @@ void Tokenizer::simplifyTokenList()
|
|||
// Replace NULL with 0..
|
||||
for (Token *tok = _tokens; tok; tok = tok->next())
|
||||
{
|
||||
if (tok->str() == "NULL" ||
|
||||
tok->str() == "'\\0'" ||
|
||||
tok->str() == "0L")
|
||||
if (tok->str() == "NULL" || tok->str() == "'\\0'")
|
||||
{
|
||||
tok->str("0");
|
||||
}
|
||||
else if (tok->isNumber() &&
|
||||
MathLib::isInt(tok->str()) &&
|
||||
MathLib::toLongNumber(tok->str()) == 0)
|
||||
{
|
||||
tok->str("0");
|
||||
}
|
||||
}
|
||||
|
||||
// Replace pointer casts of 0.. "(char *)0" => "0"
|
||||
for (Token *tok = _tokens; tok; tok = tok->next())
|
||||
|
|
|
@ -382,6 +382,9 @@ private:
|
|||
" if (p1 != NULL && p2 == NULL) { ; }\n"
|
||||
" if (p == '\\0');\n"
|
||||
" if (p == 0L);\n"
|
||||
" if (p == 0UL);\n"
|
||||
" if (p == 0ul);\n"
|
||||
" if (p == 0l);\n"
|
||||
"}\n";
|
||||
|
||||
ASSERT_EQUALS("void f ( )\n"
|
||||
|
@ -414,6 +417,9 @@ private:
|
|||
"if ( p1 && ! p2 ) { ; }\n"
|
||||
"if ( ! p ) { ; }\n"
|
||||
"if ( ! p ) { ; }\n"
|
||||
"if ( ! p ) { ; }\n"
|
||||
"if ( ! p ) { ; }\n"
|
||||
"if ( ! p ) { ; }\n"
|
||||
"}", tokenizeAndStringify(code, true));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue