use nullptr in lib/checkother.cpp

This commit is contained in:
Daniel Marjamäki 2014-02-15 08:46:28 +01:00
parent 720bd48a98
commit fb5c2d4b48
5 changed files with 35 additions and 35 deletions

View File

@ -64,9 +64,9 @@ static bool isConstExpression(const Token *tok, const std::set<std::string> &con
static bool isSameExpression(const Token *tok1, const Token *tok2, const std::set<std::string> &constFunctions) static bool isSameExpression(const Token *tok1, const Token *tok2, const std::set<std::string> &constFunctions)
{ {
if (tok1 == NULL && tok2 == NULL) if (tok1 == nullptr && tok2 == nullptr)
return true; return true;
if (tok1 == NULL || tok2 == NULL) if (tok1 == nullptr || tok2 == nullptr)
return false; return false;
if (tok1->str() != tok2->str()) if (tok1->str() != tok2->str())
return false; return false;
@ -949,7 +949,7 @@ void CheckOther::checkSwitchCaseFallThrough()
for (const Token *tok2 = i->classStart; tok2 != i->classEnd; tok2 = tok2->next()) { for (const Token *tok2 = i->classStart; tok2 != i->classEnd; tok2 = tok2->next()) {
if (Token::simpleMatch(tok2, "if (")) { if (Token::simpleMatch(tok2, "if (")) {
tok2 = tok2->next()->link()->next(); tok2 = tok2->next()->link()->next();
if (tok2->link() == NULL) { if (tok2->link() == nullptr) {
std::ostringstream errmsg; std::ostringstream errmsg;
errmsg << "unmatched if in switch: " << tok2->linenr(); errmsg << "unmatched if in switch: " << tok2->linenr();
reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str()); reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str());
@ -961,7 +961,7 @@ void CheckOther::checkSwitchCaseFallThrough()
tok2 = tok2->next()->link()->next(); tok2 = tok2->next()->link()->next();
// skip over "do { } while ( ) ;" case // skip over "do { } while ( ) ;" case
if (tok2->str() == "{") { if (tok2->str() == "{") {
if (tok2->link() == NULL) { if (tok2->link() == nullptr) {
std::ostringstream errmsg; std::ostringstream errmsg;
errmsg << "unmatched while in switch: " << tok2->linenr(); errmsg << "unmatched while in switch: " << tok2->linenr();
reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str()); reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str());
@ -972,7 +972,7 @@ void CheckOther::checkSwitchCaseFallThrough()
justbreak = false; justbreak = false;
} else if (Token::simpleMatch(tok2, "do {")) { } else if (Token::simpleMatch(tok2, "do {")) {
tok2 = tok2->next(); tok2 = tok2->next();
if (tok2->link() == NULL) { if (tok2->link() == nullptr) {
std::ostringstream errmsg; std::ostringstream errmsg;
errmsg << "unmatched do in switch: " << tok2->linenr(); errmsg << "unmatched do in switch: " << tok2->linenr();
reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str()); reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str());
@ -982,7 +982,7 @@ void CheckOther::checkSwitchCaseFallThrough()
justbreak = false; justbreak = false;
} else if (Token::simpleMatch(tok2, "for (")) { } else if (Token::simpleMatch(tok2, "for (")) {
tok2 = tok2->next()->link()->next(); tok2 = tok2->next()->link()->next();
if (tok2->link() == NULL) { if (tok2->link() == nullptr) {
std::ostringstream errmsg; std::ostringstream errmsg;
errmsg << "unmatched for in switch: " << tok2->linenr(); errmsg << "unmatched for in switch: " << tok2->linenr();
reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str()); reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str());
@ -1012,7 +1012,7 @@ void CheckOther::checkSwitchCaseFallThrough()
if (tok2->next()->str() == "else") { if (tok2->next()->str() == "else") {
tok2 = tok2->tokAt(2); tok2 = tok2->tokAt(2);
ifnest.pop(); ifnest.pop();
if (tok2->link() == NULL) { if (tok2->link() == nullptr) {
std::ostringstream errmsg; std::ostringstream errmsg;
errmsg << "unmatched if in switch: " << tok2->linenr(); errmsg << "unmatched if in switch: " << tok2->linenr();
reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str()); reportError(_tokenizer->tokens(), Severity::debug, "debug", errmsg.str());
@ -1530,7 +1530,7 @@ void CheckOther::invalidFunctionUsage()
sprintfOverlappingDataError(tok2, tok2->str()); sprintfOverlappingDataError(tok2, tok2->str());
break; break;
} }
} while (NULL != (tok2 = tok2->nextArgument())); } while (nullptr != (tok2 = tok2->nextArgument()));
} }
} }
@ -2198,7 +2198,7 @@ void CheckOther::checkZeroDivision()
// Value flow.. // Value flow..
const ValueFlow::Value *value = tok->astOperand2()->getValue(0LL); const ValueFlow::Value *value = tok->astOperand2()->getValue(0LL);
if (value) { if (value) {
if (value->condition == NULL) if (value->condition == nullptr)
zerodivError(tok); zerodivError(tok);
else if (_settings->isEnabled("warning")) else if (_settings->isEnabled("warning"))
zerodivcondError(value->condition,tok); zerodivcondError(value->condition,tok);
@ -2628,7 +2628,7 @@ void CheckOther::checkInvalidFree()
// if it is later used to free memory // if it is later used to free memory
else if (Token::Match(tok, "%var% (")) { else if (Token::Match(tok, "%var% (")) {
const Token* tok2 = Token::findmatch(tok->next(), "%var%", tok->linkAt(1)); const Token* tok2 = Token::findmatch(tok->next(), "%var%", tok->linkAt(1));
while (tok2 != NULL) { while (tok2 != nullptr) {
allocatedVariables.erase(tok2->varId()); allocatedVariables.erase(tok2->varId());
tok2 = Token::findmatch(tok2->next(), "%var%", tok->linkAt(1)); tok2 = Token::findmatch(tok2->next(), "%var%", tok->linkAt(1));
} }
@ -2698,7 +2698,7 @@ void CheckOther::checkDoubleFree()
else if (tok->str() == "}" && tok->link() && tok->link()->previous() && else if (tok->str() == "}" && tok->link() && tok->link()->previous() &&
tok->link()->linkAt(-1) && tok->link()->linkAt(-1) &&
Token::Match(tok->link()->linkAt(-1)->previous(), "while|for") && Token::Match(tok->link()->linkAt(-1)->previous(), "while|for") &&
Token::findmatch(tok->link()->linkAt(-1), "break|continue ;", tok) != NULL) { Token::findmatch(tok->link()->linkAt(-1), "break|continue ;", tok) != nullptr) {
freedVariables.clear(); freedVariables.clear();
closeDirVariables.clear(); closeDirVariables.clear();
} }
@ -2855,7 +2855,7 @@ void CheckOther::checkAlwaysTrueOrFalseStringCompare()
return; return;
const Token *tok = _tokenizer->tokens(); const Token *tok = _tokenizer->tokens();
while (tok && (tok = Token::findmatch(tok, "strncmp|strcmp|stricmp|strcmpi|strcasecmp|wcscmp|wcsncmp ( %str% , %str% ")) != NULL) { while (tok && (tok = Token::findmatch(tok, "strncmp|strcmp|stricmp|strcmpi|strcasecmp|wcscmp|wcsncmp ( %str% , %str% ")) != nullptr) {
const std::string &str1 = tok->strAt(2); const std::string &str1 = tok->strAt(2);
const std::string &str2 = tok->strAt(4); const std::string &str2 = tok->strAt(4);
alwaysTrueFalseStringCompareError(tok, str1, str2); alwaysTrueFalseStringCompareError(tok, str1, str2);
@ -2863,7 +2863,7 @@ void CheckOther::checkAlwaysTrueOrFalseStringCompare()
} }
tok = _tokenizer->tokens(); tok = _tokenizer->tokens();
while (tok && (tok = Token::findmatch(tok, "QString :: compare ( %str% , %str% )")) != NULL) { while (tok && (tok = Token::findmatch(tok, "QString :: compare ( %str% , %str% )")) != nullptr) {
const std::string &str1 = tok->strAt(4); const std::string &str1 = tok->strAt(4);
const std::string &str2 = tok->strAt(6); const std::string &str2 = tok->strAt(6);
alwaysTrueFalseStringCompareError(tok, str1, str2); alwaysTrueFalseStringCompareError(tok, str1, str2);
@ -2871,7 +2871,7 @@ void CheckOther::checkAlwaysTrueOrFalseStringCompare()
} }
tok = _tokenizer->tokens(); tok = _tokenizer->tokens();
while (tok && (tok = Token::findmatch(tok, "strncmp|strcmp|stricmp|strcmpi|strcasecmp|wcscmp|wcsncmp ( %var% , %var% ")) != NULL) { while (tok && (tok = Token::findmatch(tok, "strncmp|strcmp|stricmp|strcmpi|strcasecmp|wcscmp|wcsncmp ( %var% , %var% ")) != nullptr) {
const std::string &str1 = tok->strAt(2); const std::string &str1 = tok->strAt(2);
const std::string &str2 = tok->strAt(4); const std::string &str2 = tok->strAt(4);
if (str1 == str2) if (str1 == str2)
@ -2880,7 +2880,7 @@ void CheckOther::checkAlwaysTrueOrFalseStringCompare()
} }
tok = _tokenizer->tokens(); tok = _tokenizer->tokens();
while (tok && (tok = Token::findmatch(tok, "!!+ %str% ==|!= %str% !!+")) != NULL) { while (tok && (tok = Token::findmatch(tok, "!!+ %str% ==|!= %str% !!+")) != nullptr) {
const std::string &str1 = tok->strAt(1); const std::string &str1 = tok->strAt(1);
const std::string &str2 = tok->strAt(3); const std::string &str2 = tok->strAt(3);
alwaysTrueFalseStringCompareError(tok, str1, str2); alwaysTrueFalseStringCompareError(tok, str1, str2);
@ -3318,7 +3318,7 @@ void CheckOther::oppositeInnerCondition()
if (scope->classDef->strAt(6) == "{") { if (scope->classDef->strAt(6) == "{") {
const char *oppositeCondition = NULL; const char *oppositeCondition = nullptr;
if (scope->classDef->strAt(3) == "==") if (scope->classDef->strAt(3) == "==")
oppositeCondition = "if ( %any% !=|<|>|<=|>= %any% )"; oppositeCondition = "if ( %any% !=|<|>|<=|>= %any% )";
@ -3388,13 +3388,13 @@ void CheckOther::checkVarFuncNullUB()
++argnr; ++argnr;
ftok = ftok->previous(); ftok = ftok->previous();
} }
ftok = ftok ? ftok->previous() : NULL; ftok = ftok ? ftok->previous() : nullptr;
if (ftok && ftok->isName()) { if (ftok && ftok->isName()) {
// If this is a variadic function then report error // If this is a variadic function then report error
const Function *f = ftok->function(); const Function *f = ftok->function();
if (f && f->argCount() <= argnr) { if (f && f->argCount() <= argnr) {
const Token *tok2 = f->argDef; const Token *tok2 = f->argDef;
tok2 = tok2 ? tok2->link() : NULL; // goto ')' tok2 = tok2 ? tok2->link() : nullptr; // goto ')'
if (Token::simpleMatch(tok2->tokAt(-3), ". . .")) if (Token::simpleMatch(tok2->tokAt(-3), ". . ."))
varFuncNullUBError(tok); varFuncNullUBError(tok);
} }

View File

@ -133,7 +133,7 @@ void CheckStl::iterators()
if (container && tok2->varId() != container->declarationId()) { if (container && tok2->varId() != container->declarationId()) {
// skip error message if container is a set.. // skip error message if container is a set..
const Variable *variableInfo = tok2->variable(); const Variable *variableInfo = tok2->variable();
const Token *decltok = variableInfo ? variableInfo->typeStartToken() : NULL; const Token *decltok = variableInfo ? variableInfo->typeStartToken() : nullptr;
if (Token::simpleMatch(decltok, "std :: set")) if (Token::simpleMatch(decltok, "std :: set"))
continue; // No warning continue; // No warning
@ -434,7 +434,7 @@ private:
// check if there is a "it = ints.erase(it);" pattern. if so // check if there is a "it = ints.erase(it);" pattern. if so
// the it is not invalidated. // the it is not invalidated.
const Token *token = &tok; const Token *token = &tok;
while (NULL != (token = token ? token->previous() : 0)) { while (nullptr != (token = token ? token->previous() : 0)) {
if (Token::Match(token, "[;{}]")) if (Token::Match(token, "[;{}]"))
break; break;
else if (token->str() == "=") else if (token->str() == "=")
@ -506,7 +506,7 @@ void CheckStl::erase()
if (Token::Match(tok2, "; %var% !=")) { if (Token::Match(tok2, "; %var% !=")) {
// Get declaration token for var.. // Get declaration token for var..
const Variable *variableInfo = tok2->next()->variable(); const Variable *variableInfo = tok2->next()->variable();
const Token *decltok = variableInfo ? variableInfo->typeEndToken() : NULL; const Token *decltok = variableInfo ? variableInfo->typeEndToken() : nullptr;
// Is variable an iterator? // Is variable an iterator?
bool isIterator = false; bool isIterator = false;

View File

@ -368,7 +368,7 @@ private:
*/ */
static void parserhs(const Token *tok2, std::list<ExecutionPath *> &checks) { static void parserhs(const Token *tok2, std::list<ExecutionPath *> &checks) {
// check variable usages in rhs/index // check variable usages in rhs/index
while (NULL != (tok2 = tok2->next())) { while (nullptr != (tok2 = tok2->next())) {
if (Token::Match(tok2, "[;)=]")) if (Token::Match(tok2, "[;)=]"))
break; break;
if (Token::Match(tok2, "%var% (")) if (Token::Match(tok2, "%var% ("))
@ -713,7 +713,7 @@ private:
if (Token::Match(tok2->tokAt(-2), "[(,] *") || Token::Match(tok2->next(), ". %var%")) { if (Token::Match(tok2->tokAt(-2), "[(,] *") || Token::Match(tok2->next(), ". %var%")) {
// find function call.. // find function call..
const Token *functionCall = tok2; const Token *functionCall = tok2;
while (NULL != (functionCall = functionCall ? functionCall->previous() : 0)) { while (nullptr != (functionCall = functionCall ? functionCall->previous() : 0)) {
if (functionCall->str() == "(") if (functionCall->str() == "(")
break; break;
if (functionCall->str() == ")") if (functionCall->str() == ")")
@ -1097,7 +1097,7 @@ void CheckUninitVar::checkScope(const Scope* scope)
} }
if (stdtype || i->isPointer()) { if (stdtype || i->isPointer()) {
bool alloc = false; bool alloc = false;
checkScopeForVariable(scope, tok, *i, NULL, NULL, &alloc, ""); checkScopeForVariable(scope, tok, *i, nullptr, nullptr, &alloc, "");
} }
if (Token::Match(i->typeStartToken(), "struct %type% *| %var% ;")) if (Token::Match(i->typeStartToken(), "struct %type% *| %var% ;"))
checkStruct(scope, tok, *i); checkStruct(scope, tok, *i);
@ -1115,7 +1115,7 @@ void CheckUninitVar::checkScope(const Scope* scope)
checkStruct(scope, tok, *arg); checkStruct(scope, tok, *arg);
else if (arg->typeStartToken()->isStandardType()) { else if (arg->typeStartToken()->isStandardType()) {
bool alloc = false; bool alloc = false;
checkScopeForVariable(scope, tok->next(), *arg, NULL, NULL, &alloc, ""); checkScopeForVariable(scope, tok->next(), *arg, nullptr, nullptr, &alloc, "");
} }
} }
} }
@ -1156,7 +1156,7 @@ void CheckUninitVar::checkStruct(const Scope* scope, const Token *tok, const Var
const Token *tok2 = tok; const Token *tok2 = tok;
if (tok->str() == "}") if (tok->str() == "}")
tok2 = tok2->next(); tok2 = tok2->next();
checkScopeForVariable(scope, tok2, structvar, NULL, NULL, &alloc, var.name()); checkScopeForVariable(scope, tok2, structvar, nullptr, nullptr, &alloc, var.name());
} }
} }
} }
@ -1239,7 +1239,7 @@ bool CheckUninitVar::checkScopeForVariable(const Scope* scope, const Token *tok,
// Unconditional inner scope.. // Unconditional inner scope..
if (tok->str() == "{" && Token::Match(tok->previous(), "[;{}]")) { if (tok->str() == "{" && Token::Match(tok->previous(), "[;{}]")) {
if (checkScopeForVariable(scope, tok->next(), var, possibleInit, NULL, alloc, membervar)) if (checkScopeForVariable(scope, tok->next(), var, possibleInit, nullptr, alloc, membervar))
return true; return true;
tok = tok->link(); tok = tok->link();
continue; continue;
@ -1330,7 +1330,7 @@ bool CheckUninitVar::checkScopeForVariable(const Scope* scope, const Token *tok,
bool possibleInitElse(number_of_if > 0 || suppressErrors); bool possibleInitElse(number_of_if > 0 || suppressErrors);
bool noreturnElse = false; bool noreturnElse = false;
const bool initelse = !alwaysTrue && checkScopeForVariable(scope, tok->next(), var, &possibleInitElse, NULL, alloc, membervar); const bool initelse = !alwaysTrue && checkScopeForVariable(scope, tok->next(), var, &possibleInitElse, nullptr, alloc, membervar);
std::map<unsigned int, int> varValueElse; std::map<unsigned int, int> varValueElse;
if (!alwaysTrue && !initelse && !noreturnElse) { if (!alwaysTrue && !initelse && !noreturnElse) {
@ -1479,7 +1479,7 @@ bool CheckUninitVar::checkScopeForVariable(const Scope* scope, const Token *tok,
tok = tok->next(); tok = tok->next();
} }
return bool(noreturn==NULL); return bool(noreturn==nullptr);
} }
// variable is seen.. // variable is seen..
@ -1564,7 +1564,7 @@ bool CheckUninitVar::checkIfForWhileHead(const Token *startparentheses, const Va
bool CheckUninitVar::checkLoopBody(const Token *tok, const Variable& var, const bool alloc, const std::string &membervar, const bool suppressErrors) bool CheckUninitVar::checkLoopBody(const Token *tok, const Variable& var, const bool alloc, const std::string &membervar, const bool suppressErrors)
{ {
const Token *usetok = NULL; const Token *usetok = nullptr;
assert(tok->str() == "{"); assert(tok->str() == "{");
@ -1643,7 +1643,7 @@ void CheckUninitVar::checkRhs(const Token *tok, const Variable &var, bool alloc,
{ {
bool rhs = false; bool rhs = false;
unsigned int indent = 0; unsigned int indent = 0;
while (NULL != (tok = tok->next())) { while (nullptr != (tok = tok->next())) {
if (tok->str() == "=") if (tok->str() == "=")
rhs = true; rhs = true;
else if (rhs && tok->varId() == var.declarationId()) { else if (rhs && tok->varId() == var.declarationId()) {

View File

@ -381,7 +381,7 @@ void Variables::leaveScope(bool insideLoop)
for (std::set<unsigned int>::const_iterator readIter = currentVarReadInScope.begin(); for (std::set<unsigned int>::const_iterator readIter = currentVarReadInScope.begin();
readIter != currentVarReadInScope.end(); readIter != currentVarReadInScope.end();
++readIter) { ++readIter) {
read(*readIter, NULL); read(*readIter, nullptr);
} }
} }
@ -1192,7 +1192,7 @@ void CheckUnusedVar::checkStructMemberUsage()
if (!structname.empty()) { if (!structname.empty()) {
const std::string pattern1(structname + " %var% ;"); const std::string pattern1(structname + " %var% ;");
const Token *tok2 = tok; const Token *tok2 = tok;
while (NULL != (tok2 = Token::findmatch(tok2->next(), pattern1.c_str()))) { while (nullptr != (tok2 = Token::findmatch(tok2->next(), pattern1.c_str()))) {
if (Token::simpleMatch(tok2->tokAt(3), (tok2->strAt(1) + " = {").c_str())) { if (Token::simpleMatch(tok2->tokAt(3), (tok2->strAt(1) + " = {").c_str())) {
structname.clear(); structname.clear();
break; break;

View File

@ -451,7 +451,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token
const char *error = 0; const char *error = 0;
int erroffset = 0; int erroffset = 0;
pcre *re = pcre_compile(rule.pattern.c_str(),0,&error,&erroffset,NULL); pcre *re = pcre_compile(rule.pattern.c_str(),0,&error,&erroffset,nullptr);
if (!re) { if (!re) {
if (error) { if (error) {
ErrorLogger::ErrorMessage errmsg(std::list<ErrorLogger::ErrorMessage::FileLocation>(), ErrorLogger::ErrorMessage errmsg(std::list<ErrorLogger::ErrorMessage::FileLocation>(),
@ -467,7 +467,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token
int pos = 0; int pos = 0;
int ovector[30]; int ovector[30];
while (pos < (int)str.size() && 0 <= pcre_exec(re, NULL, str.c_str(), (int)str.size(), pos, 0, ovector, 30)) { while (pos < (int)str.size() && 0 <= pcre_exec(re, nullptr, str.c_str(), (int)str.size(), pos, 0, ovector, 30)) {
unsigned int pos1 = (unsigned int)ovector[0]; unsigned int pos1 = (unsigned int)ovector[0];
unsigned int pos2 = (unsigned int)ovector[1]; unsigned int pos2 = (unsigned int)ovector[1];