borland and visual c++ fixes
This commit is contained in:
parent
d9b9368238
commit
42e56153a4
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
@ -92,7 +92,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
if (Token::Match(tok, "%varid% [ %num% ]", varid))
|
||||
{
|
||||
const char *num = tok->strAt(2);
|
||||
if (strtol(num, NULL, 10) >= size)
|
||||
if (std::strtol(num, NULL, 10) >= size)
|
||||
{
|
||||
ReportError(ErrorMessage::arrayIndexOutOfBounds(_tokenizer, tok->next()));
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
else if (Token::Match(tok, std::string(varnames + " [ %num% ]").c_str()))
|
||||
{
|
||||
const char *num = tok->strAt(2 + varc);
|
||||
if (strtol(num, NULL, 10) >= size)
|
||||
if (std::strtol(num, NULL, 10) >= size)
|
||||
{
|
||||
ReportError(ErrorMessage::arrayIndexOutOfBounds(_tokenizer, tok->next()));
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
if (!tok->isName() && !Token::Match(tok, "[.&]") && Token::Match(tok->next(), "%varid% [ %num% ]", varid))
|
||||
{
|
||||
const char *num = tok->strAt(3);
|
||||
if (strtol(num, NULL, 10) >= size)
|
||||
if (std::strtol(num, NULL, 10) >= size)
|
||||
{
|
||||
ReportError(ErrorMessage::arrayIndexOutOfBounds(_tokenizer, tok->next()));
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
else if (!tok->isName() && !Token::Match(tok, "[.&]") && Token::Match(tok->next(), std::string(varnames + " [ %num% ]").c_str()))
|
||||
{
|
||||
const char *num = tok->next()->strAt(2 + varc);
|
||||
if (strtol(num, NULL, 10) >= size)
|
||||
if (std::strtol(num, NULL, 10) >= size)
|
||||
{
|
||||
ReportError(ErrorMessage::arrayIndexOutOfBounds(_tokenizer, tok->next()));
|
||||
}
|
||||
|
@ -156,7 +156,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
Token::Match(tok->next(), "( %var% , %varid% , %num% )", varid))
|
||||
{
|
||||
const char *num = tok->strAt(6);
|
||||
if (atoi(num) > total_size)
|
||||
if (std::atoi(num) > total_size)
|
||||
{
|
||||
ReportError(ErrorMessage::bufferOverrun(_tokenizer, tok));
|
||||
}
|
||||
|
@ -170,7 +170,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
Token::Match(tok->next(), std::string("( %var% , " + varnames + " , %num% )").c_str()))
|
||||
{
|
||||
const char *num = tok->strAt(varc + 6);
|
||||
if (atoi(num) > total_size)
|
||||
if (std::atoi(num) > total_size)
|
||||
{
|
||||
ReportError(ErrorMessage::bufferOverrun(_tokenizer, tok));
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
|
||||
// Get index variable and stopsize.
|
||||
const char *strindex = tok2->aaaa();
|
||||
int value = ((tok2->next()->aaaa1() == '=') ? 1 : 0) + atoi(tok2->strAt(2));
|
||||
int value = ((tok2->next()->aaaa1() == '=') ? 1 : 0) + std::atoi(tok2->strAt(2));
|
||||
if (value <= size)
|
||||
continue;
|
||||
|
||||
|
@ -287,7 +287,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const Token *tok, co
|
|||
// snprintf..
|
||||
if (varid > 0 && Token::Match(tok, "snprintf ( %varid% , %num%", varid))
|
||||
{
|
||||
int n = atoi(tok->strAt(4));
|
||||
int n = std::atoi(tok->strAt(4));
|
||||
if (n > size)
|
||||
ReportError(ErrorMessage::outOfBounds(_tokenizer, tok->tokAt(4), "snprintf size"));
|
||||
}
|
||||
|
@ -412,7 +412,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_LocalVariable()
|
|||
if (Token::Match(tok, "%type% %var% [ %num% ] ;"))
|
||||
{
|
||||
varname[0] = tok->strAt(1);
|
||||
size = strtoul(tok->strAt(3), NULL, 10);
|
||||
size = std::strtoul(tok->strAt(3), NULL, 10);
|
||||
type = tok->aaaa();
|
||||
varid = tok->tokAt(1)->varId();
|
||||
nextTok = 6;
|
||||
|
@ -420,7 +420,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_LocalVariable()
|
|||
else if (Token::Match(tok, "[*;{}] %var% = new %type% [ %num% ]"))
|
||||
{
|
||||
varname[0] = tok->strAt(1);
|
||||
size = strtoul(tok->strAt(6), NULL, 10);
|
||||
size = std::strtoul(tok->strAt(6), NULL, 10);
|
||||
type = tok->strAt(4);
|
||||
varid = tok->tokAt(1)->varId();
|
||||
nextTok = 8;
|
||||
|
@ -475,7 +475,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_StructVariable()
|
|||
|
||||
const char *varname[3] = {0, 0, 0};
|
||||
varname[1] = tok2->strAt(ivar);
|
||||
int arrsize = atoi(tok2->strAt(ivar + 2));
|
||||
int arrsize = std::atoi(tok2->strAt(ivar + 2));
|
||||
int total_size = arrsize * _tokenizer->SizeOfType(tok2->next()->aaaa());
|
||||
if (total_size == 0)
|
||||
continue;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
@ -316,7 +316,7 @@ void CheckOther::InvalidFunctionUsage()
|
|||
{
|
||||
if (Token::Match(tok2, ", %num% )"))
|
||||
{
|
||||
int radix = atoi(tok2->strAt(1));
|
||||
int radix = std::atoi(tok2->strAt(1));
|
||||
if (!(radix == 0 || (radix >= 2 && radix <= 36)))
|
||||
{
|
||||
_errorLogger->reportErr(ErrorMessage::dangerousUsageStrtol(_tokenizer, tok2));
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
@ -27,6 +27,7 @@
|
|||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <cctype>
|
||||
|
||||
Preprocessor::Preprocessor()
|
||||
{
|
||||
|
@ -72,7 +73,7 @@ std::string Preprocessor::read(std::istream &istr)
|
|||
++lineno;
|
||||
|
||||
// Replace assorted special chars with spaces..
|
||||
if ((ch != '\n') && (isspace(ch) || iscntrl(ch)))
|
||||
if ((ch != '\n') && (std::isspace(ch) || std::iscntrl(ch)))
|
||||
ch = ' ';
|
||||
|
||||
// Skip spaces after ' ' and after '#'
|
||||
|
@ -697,7 +698,7 @@ std::string Preprocessor::expandMacros(std::string code)
|
|||
std::string::size_type pos = pos1 + macro.name().length();
|
||||
if (pos < code.length()
|
||||
&& code.substr(pos1, macro.name().length()) == macro.name()
|
||||
&& !isalnum(code[pos]) && code[pos] != '_')
|
||||
&& !std::isalnum(code[pos]) && code[pos] != '_')
|
||||
break;
|
||||
|
||||
|
||||
|
@ -720,7 +721,7 @@ std::string Preprocessor::expandMacros(std::string code)
|
|||
// TODO, this code is here, because there is currently a bug in cppcheck
|
||||
// Once it has been sorted out, this if can be removed
|
||||
std::cout << "\n\n####### There is a bug in preprocessor.cpp that can cause crash, shutting down.\n\n" << std::endl;
|
||||
exit(0);
|
||||
std::exit(0);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
|
@ -732,14 +733,14 @@ std::string Preprocessor::expandMacros(std::string code)
|
|||
continue;
|
||||
|
||||
// Previous char must not be alphanumeric or '_'
|
||||
if (pos1 != 0 && (isalnum(code[pos1-1]) || code[pos1-1] == '_'))
|
||||
if (pos1 != 0 && (std::isalnum(code[pos1-1]) || code[pos1-1] == '_'))
|
||||
continue;
|
||||
|
||||
// The char after the macroname must not be alphanumeric or '_'
|
||||
if (pos1 + macro.name().length() < code.length())
|
||||
{
|
||||
std::string::size_type pos2 = pos1 + macro.name().length();
|
||||
if (isalnum(code[pos2]) || code[pos2] == '_')
|
||||
if (std::isalnum(code[pos2]) || code[pos2] == '_')
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
@ -31,6 +31,7 @@
|
|||
#include <list>
|
||||
#include <algorithm>
|
||||
#include <cstdlib>
|
||||
#include <cctype>
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
@ -79,7 +80,7 @@ void Tokenizer::addtoken(const char str[], const unsigned int lineno, const unsi
|
|||
std::ostringstream str2;
|
||||
if (strncmp(str, "0x", 2) == 0)
|
||||
{
|
||||
str2 << strtoul(str + 2, NULL, 16);
|
||||
str2 << std::strtoul(str + 2, NULL, 16);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -332,7 +333,7 @@ void Tokenizer::tokenize(std::istream &code, const char FileName[])
|
|||
}
|
||||
|
||||
|
||||
if (isspace(ch) || iscntrl(ch))
|
||||
if (std::isspace(ch) || std::iscntrl(ch))
|
||||
{
|
||||
addtoken(CurrentToken.c_str(), lineno, FileIndex);
|
||||
CurrentToken.clear();
|
||||
|
@ -651,7 +652,7 @@ void Tokenizer::simplifyTokenList()
|
|||
continue;
|
||||
|
||||
const char *varname = tok->strAt(1);
|
||||
int total_size = size * atoi(tok->strAt(3));
|
||||
int total_size = size * std::atoi(tok->strAt(3));
|
||||
|
||||
// Replace 'sizeof(var)' with number
|
||||
int indentlevel = 0;
|
||||
|
@ -705,8 +706,8 @@ void Tokenizer::simplifyTokenList()
|
|||
// (1-2)
|
||||
if (Token::Match(tok, "[[,(=<>] %num% [+-*/] %num% [],);=<>]"))
|
||||
{
|
||||
int i1 = atoi(tok->strAt(1));
|
||||
int i2 = atoi(tok->strAt(3));
|
||||
int i1 = std::atoi(tok->strAt(1));
|
||||
int i2 = std::atoi(tok->strAt(3));
|
||||
if (i2 == 0 && *(tok->strAt(2)) == '/')
|
||||
{
|
||||
continue;
|
||||
|
@ -1201,8 +1202,8 @@ bool Tokenizer::simplifyConditions()
|
|||
Token::Match(tok->tokAt(1), "%num% %any% %num%") &&
|
||||
(tok4->str() == "&&" || tok4->str() == "||" || tok4->str() == ")"))
|
||||
{
|
||||
double op1 = (strstr(tok->strAt(1), "0x")) ? strtol(tok->strAt(1), 0, 16) : atof(tok->strAt(1));
|
||||
double op2 = (strstr(tok->strAt(3), "0x")) ? strtol(tok->strAt(3), 0, 16) : atof(tok->strAt(3));
|
||||
double op1 = (strstr(tok->strAt(1), "0x")) ? std::strtol(tok->strAt(1), 0, 16) : std::atof(tok->strAt(1));
|
||||
double op2 = (strstr(tok->strAt(3), "0x")) ? std::strtol(tok->strAt(3), 0, 16) : std::atof(tok->strAt(3));
|
||||
std::string cmp = tok->strAt(2);
|
||||
|
||||
bool result = false;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Cppcheck - A tool for static C/C++ code analysis
|
||||
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
|
||||
* Leandro Penz, Kimmo Varis
|
||||
|
|
Loading…
Reference in New Issue