Refactoring: Use the Token::link instead of loop
This commit is contained in:
parent
40fc605e2b
commit
2cdb0abb82
|
@ -267,9 +267,8 @@ void CheckBufferOverrun::checkScope(const Token *tok, const char *varname[], con
|
||||||
if (value <= size)
|
if (value <= size)
|
||||||
condition_out_of_bounds = false;;
|
condition_out_of_bounds = false;;
|
||||||
|
|
||||||
// Goto the end of the for loop..
|
// Goto the end paranthesis of the for-statement: "for (x; y; z)" ..
|
||||||
while (tok2 && tok2->str() != ")")
|
tok2 = tok->next()->link();
|
||||||
tok2 = tok2->next();
|
|
||||||
if (!tok2 || !tok2->tokAt(5))
|
if (!tok2 || !tok2->tokAt(5))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -62,8 +62,7 @@ CheckMemoryLeak::AllocType CheckMemoryLeak::getAllocationType(const Token *tok2,
|
||||||
// * var = strndup("hello", 3);
|
// * var = strndup("hello", 3);
|
||||||
if (tok2 && tok2->str() == "(")
|
if (tok2 && tok2->str() == "(")
|
||||||
{
|
{
|
||||||
while (tok2 && tok2->str() != ")")
|
tok2 = tok2->link();
|
||||||
tok2 = tok2->next();
|
|
||||||
tok2 = tok2 ? tok2->next() : NULL;
|
tok2 = tok2 ? tok2->next() : NULL;
|
||||||
}
|
}
|
||||||
if (! tok2)
|
if (! tok2)
|
||||||
|
@ -143,8 +142,7 @@ CheckMemoryLeak::AllocType CheckMemoryLeak::getReallocationType(const Token *tok
|
||||||
// * var = (char *)realloc(..;
|
// * var = (char *)realloc(..;
|
||||||
if (tok2 && tok2->str() == "(")
|
if (tok2 && tok2->str() == "(")
|
||||||
{
|
{
|
||||||
while (tok2 && tok2->str() != ")")
|
tok2 = tok2->link();
|
||||||
tok2 = tok2->next();
|
|
||||||
tok2 = tok2 ? tok2->next() : NULL;
|
tok2 = tok2 ? tok2->next() : NULL;
|
||||||
}
|
}
|
||||||
if (! tok2)
|
if (! tok2)
|
||||||
|
@ -735,8 +733,7 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
|
||||||
addtoken("if(var)");
|
addtoken("if(var)");
|
||||||
|
|
||||||
// Make sure the "use" will not be added
|
// Make sure the "use" will not be added
|
||||||
while (tok->str() != ")")
|
tok = tok->next()->link();
|
||||||
tok = tok->next();
|
|
||||||
}
|
}
|
||||||
else if (Token::simpleMatch(tok, std::string("if ( " + varnameStr + " == -1 )").c_str()) ||
|
else if (Token::simpleMatch(tok, std::string("if ( " + varnameStr + " == -1 )").c_str()) ||
|
||||||
Token::simpleMatch(tok, std::string("if ( " + varnameStr + " < 0 )").c_str()))
|
Token::simpleMatch(tok, std::string("if ( " + varnameStr + " < 0 )").c_str()))
|
||||||
|
@ -2068,24 +2065,14 @@ void CheckMemoryLeakStructMember::check()
|
||||||
else if (Token::Match(tok3, "if ( ! %var% . %varid% )", structmemberid))
|
else if (Token::Match(tok3, "if ( ! %var% . %varid% )", structmemberid))
|
||||||
{
|
{
|
||||||
// Goto the ")"
|
// Goto the ")"
|
||||||
while (tok3->str() != ")")
|
tok3 = tok3->next()->link();
|
||||||
tok3 = tok3->next();
|
|
||||||
|
|
||||||
// Skip block..
|
// make sure we have ") {".. it should be
|
||||||
unsigned int indentlevel = 0;
|
if (!Token::simpleMatch(tok3, ") {"))
|
||||||
while (tok3)
|
break;
|
||||||
{
|
|
||||||
if (tok3->str() == "{")
|
|
||||||
++indentlevel;
|
|
||||||
|
|
||||||
else if (tok3->str() == "}")
|
// Goto the "}"
|
||||||
{
|
tok3 = tok3->next()->link();
|
||||||
if (indentlevel <= 1)
|
|
||||||
break;
|
|
||||||
--indentlevel;
|
|
||||||
}
|
|
||||||
tok3 = tok3->next();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returning from function..
|
// Returning from function..
|
||||||
|
|
|
@ -977,24 +977,17 @@ void CheckOther::nullPointer()
|
||||||
|
|
||||||
// Locate the end of the while loop..
|
// Locate the end of the while loop..
|
||||||
const Token *tok2 = tok->tokAt(4);
|
const Token *tok2 = tok->tokAt(4);
|
||||||
int indentlevel = 0;
|
if (tok2->str() == "{")
|
||||||
while (tok2)
|
tok2 = tok2->link();
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (tok2->str() == "{")
|
while (tok2 && tok2->str() != ";")
|
||||||
++indentlevel;
|
tok2 = tok2->next();
|
||||||
else if (tok2->str() == "}")
|
|
||||||
{
|
|
||||||
if (indentlevel <= 1)
|
|
||||||
break;
|
|
||||||
--indentlevel;
|
|
||||||
}
|
|
||||||
else if (indentlevel == 0 && tok2->str() == ";")
|
|
||||||
break;
|
|
||||||
tok2 = tok2->next();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Goto next token
|
// Goto next token
|
||||||
tok2 = tok2 ? tok2->next() : 0;
|
if (tok2)
|
||||||
|
tok2 = tok2->next();
|
||||||
|
|
||||||
// Check if the variable is dereferenced..
|
// Check if the variable is dereferenced..
|
||||||
while (tok2)
|
while (tok2)
|
||||||
|
|
Loading…
Reference in New Issue