Fixed #2856 (--errorlist not printing all auto-variable errors)
This commit is contained in:
parent
d1d8c24a03
commit
31e3844f3f
|
@ -119,12 +119,12 @@ void CheckAutoVariables::autoVariables()
|
|||
// Critical return
|
||||
else if (Token::Match(tok, "return & %var% ;") && isAutoVar(tok->tokAt(2)->varId()))
|
||||
{
|
||||
reportError(tok, Severity::error, "autoVariables", "Return of the address of an auto-variable");
|
||||
errorReturnAddressToAutoVariable(tok);
|
||||
}
|
||||
// Invalid pointer deallocation
|
||||
else if (Token::Match(tok, "free ( %var% ) ;") && isAutoVarArray(tok->tokAt(2)->varId()))
|
||||
{
|
||||
reportError(tok, Severity::error, "autoVariables", "Invalid deallocation");
|
||||
errorInvalidDeallocation(tok);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -188,6 +188,11 @@ void CheckAutoVariables::returnPointerToLocalArray()
|
|||
}
|
||||
}
|
||||
|
||||
void CheckAutoVariables::errorReturnAddressToAutoVariable(const Token *tok)
|
||||
{
|
||||
reportError(tok, Severity::error, "returnAddressOfAutoVariable", "Return of the address of an auto-variable");
|
||||
}
|
||||
|
||||
void CheckAutoVariables::errorReturnPointerToLocalArray(const Token *tok)
|
||||
{
|
||||
reportError(tok, Severity::error, "returnLocalVariable", "Returning pointer to local array variable");
|
||||
|
@ -291,6 +296,12 @@ void CheckAutoVariables::errorReturnTempReference(const Token *tok)
|
|||
reportError(tok, Severity::error, "returnTempReference", "Returning reference to temporary");
|
||||
}
|
||||
|
||||
void CheckAutoVariables::errorInvalidDeallocation(const Token *tok)
|
||||
{
|
||||
reportError(tok, Severity::error, "autovarInvalidDeallocation", "Invalid deallocation");
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
// Return c_str
|
||||
|
|
|
@ -81,22 +81,26 @@ private:
|
|||
*/
|
||||
bool returnTemporary(const Token *tok) const;
|
||||
|
||||
void errorReturnAddressToAutoVariable(const Token *tok);
|
||||
void errorReturnPointerToLocalArray(const Token *tok);
|
||||
void errorAutoVariableAssignment(const Token *tok);
|
||||
void errorReturnReference(const Token *tok);
|
||||
void errorReturnTempReference(const Token *tok);
|
||||
void errorReturnAutocstr(const Token *tok);
|
||||
void errorReturnTempPointer(const Token *tok);
|
||||
void errorInvalidDeallocation(const Token *tok);
|
||||
|
||||
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings)
|
||||
{
|
||||
CheckAutoVariables c(0,settings,errorLogger);
|
||||
c.errorAutoVariableAssignment(0);
|
||||
c.errorReturnAddressToAutoVariable(0);
|
||||
c.errorReturnPointerToLocalArray(0);
|
||||
c.errorReturnReference(0);
|
||||
c.errorReturnTempReference(0);
|
||||
c.errorReturnAutocstr(0);
|
||||
c.errorReturnTempPointer(0);
|
||||
c.errorInvalidDeallocation(0);
|
||||
}
|
||||
|
||||
std::string myName() const
|
||||
|
|
Loading…
Reference in New Issue