Borland C++ Builder: Fixed compilation and testrunner problems

This commit is contained in:
danmar 2009-08-13 22:13:52 +02:00
parent 4f8a06ed0d
commit 3de825c290
5 changed files with 137 additions and 99 deletions

View File

@ -252,7 +252,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const char *varname[], con
{
if (Token::Match(tok2, "%varid% < %num% ;", counter_varid))
{
max_counter_value = MathLib::toString<long>(atol(tok2->strAt(2)) - 1);
max_counter_value = MathLib::toString<long>(std::atol(tok2->strAt(2)) - 1);
}
else if (Token::Match(tok2, "%varid% <= %num% ;", counter_varid))
{
@ -318,8 +318,8 @@ void CheckBufferOverrun::checkScope(const Token *tok, const char *varname[], con
//printf("min_index: %s %c %s\n", min_counter_value.c_str(), action, second.c_str());
//printf("max_index: %s %c %s\n", max_counter_value.c_str(), action, second.c_str());
min_index = atoi(MathLib::calculate(min_counter_value, second, action).c_str());
max_index = atoi(MathLib::calculate(max_counter_value, second, action).c_str());
min_index = std::atoi(MathLib::calculate(min_counter_value, second, action).c_str());
max_index = std::atoi(MathLib::calculate(max_counter_value, second, action).c_str());
}
else if (Token::Match(tok2, "%varid% [ %num% +|-|*|/ %var% ]", varid) &&
tok2->tokAt(4)->varId() == counter_varid)
@ -330,8 +330,8 @@ void CheckBufferOverrun::checkScope(const Token *tok, const char *varname[], con
//printf("min_index: %s %c %s\n", first.c_str(), action, min_counter_value.c_str());
//printf("max_index: %s %c %s\n", first.c_str(), action, max_counter_value.c_str());
min_index = atoi(MathLib::calculate(first, min_counter_value, action).c_str());
max_index = atoi(MathLib::calculate(first, max_counter_value, action).c_str());
min_index = std::atoi(MathLib::calculate(first, min_counter_value, action).c_str());
max_index = std::atoi(MathLib::calculate(first, max_counter_value, action).c_str());
}
//printf("min_index = %d, max_index = %d, size = %d\n", min_index, max_index, size);
@ -369,7 +369,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const char *varname[], con
// Dangerous usage of strncat..
if (varid > 0 && Token::Match(tok, "strncat ( %varid% , %any% , %num% )", varid))
{
int n = atoi(tok->strAt(6));
int n = std::atoi(tok->strAt(6));
if (n >= (size - 1))
strncatUsage(tok);
}
@ -378,7 +378,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const char *varname[], con
// Dangerous usage of strncpy + strncat..
if (varid > 0 && Token::Match(tok, "strncpy|strncat ( %varid% , %any% , %num% ) ; strncat ( %varid% , %any% , %num% )", varid))
{
int n = atoi(tok->strAt(6)) + atoi(tok->strAt(15));
int n = std::atoi(tok->strAt(6)) + std::atoi(tok->strAt(15));
if (n > size)
strncatUsage(tok->tokAt(9));
}

View File

@ -33,18 +33,26 @@ long MathLib::toLongNumber(const std::string &str)
{
if (strncmp(str.c_str(), "0x", 2) == 0)
{
return strtoul(str.c_str(), '\0', 16);
return std::strtoul(str.c_str(), '\0', 16);
}
if (strncmp(str.c_str(), "0", 1) == 0)
{
return strtoul(str.c_str(), '\0', 8);
return std::strtoul(str.c_str(), '\0', 8);
}
return atol(str.c_str());
return std::atol(str.c_str());
}
double MathLib::toDoubleNumber(const std::string &str)
{
return atof(str.c_str());
if (strncmp(str.c_str(), "0x", 2) == 0)
{
return std::strtoul(str.c_str(), '\0', 16);
}
if (strncmp(str.c_str(), "0", 1) == 0)
{
return std::strtoul(str.c_str(), '\0', 8);
}
return std::atof(str.c_str());
}
template <typename T>
@ -137,24 +145,24 @@ std::string MathLib::calculate(const std::string &first, const std::string &seco
std::string MathLib::sin(const std::string &tok)
{
return toString<double>(::sin(toDoubleNumber(tok)));
return toString<double>(std::sin(toDoubleNumber(tok)));
}
std::string MathLib::cos(const std::string &tok)
{
return toString<double>(::cos(toDoubleNumber(tok)));
return toString<double>(std::cos(toDoubleNumber(tok)));
}
std::string MathLib::tan(const std::string &tok)
{
return toString<double>(::tan(toDoubleNumber(tok)));
return toString<double>(std::tan(toDoubleNumber(tok)));
}
std::string MathLib::abs(const std::string &tok)
{
return toString<double>(::abs(toDoubleNumber(tok)));
return toString<double>(std::abs(toDoubleNumber(tok)));
}
bool MathLib::isGreater(const std::string &first, const std::string &second)

View File

@ -131,7 +131,7 @@ void Token::replace(Token *replaceThis, Token *start, Token *end)
const Token *Token::tokAt(int index) const
{
const Token *tok = this;
int num = abs(index);
int num = std::abs(index);
while (num > 0 && tok)
{
if (index > 0)
@ -146,7 +146,7 @@ const Token *Token::tokAt(int index) const
Token *Token::tokAt(int index)
{
Token *tok = this;
int num = abs(index);
int num = std::abs(index);
while (num > 0 && tok)
{
if (index > 0)

View File

@ -1709,6 +1709,7 @@ private:
CheckMemoryLeakInFunction checkMemoryLeak;
std::list<const Token *> callstack;
CheckMemoryLeak::AllocType allocType, deallocType;
allocType = deallocType = CheckMemoryLeak::No;
bool all = false;
Token *tokens = checkMemoryLeak.getcode(tokenizer.tokens(), callstack, varname, allocType, deallocType, false, all, 1);

View File

@ -18,15 +18,15 @@
<CfgParent>Base</CfgParent>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
<OutputExt>exe</OutputExt>
<Defines>NO_STRICT</Defines>
<BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
<DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
<Defines>NO_STRICT</Defines>
<DynamicRTL>true</DynamicRTL>
<UsePackages>true</UsePackages>
<ILINK_ObjectSearchPath>C:\cppcheck;test;src</ILINK_ObjectSearchPath>
<ProjectType>CppConsoleApplication</ProjectType>
<UsePackages>true</UsePackages>
<NoVCL>true</NoVCL>
<ProjectType>CppConsoleApplication</ProjectType>
<FinalOutputDir>.</FinalOutputDir>
<PackageImports>vclx.bpi;vcl.bpi;rtl.bpi;vclactnband.bpi</PackageImports>
<BCC_wpar>false</BCC_wpar>
@ -34,10 +34,10 @@
<ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;C:\cppcheck;test;src</ILINK_LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Optimize>false</DCC_Optimize>
<BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
<Defines>_DEBUG;$(Defines)</Defines>
<DCC_Optimize>false</DCC_Optimize>
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
<Defines>_DEBUG;$(Defines)</Defines>
<ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
<BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
<ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
@ -48,8 +48,8 @@
<IntermediateOutputDir>bcb_Debug</IntermediateOutputDir>
<TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
<BCC_StackFrames>true</BCC_StackFrames>
<ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
<BCC_DisableOptimizations>true</BCC_DisableOptimizations>
<ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
<TASM_Debugging>Full</TASM_Debugging>
<BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
</PropertyGroup>
@ -68,125 +68,154 @@
<Excluded_Packages Name="C:\Documents and Settings\All Users\Documents\RAD Studio\5.0\BPL\A407_D110.bpl">TurboPower Async Professional 4.07 Designtime Package - VCL110</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\All Users\Documents\RAD Studio\5.0\BPL\DreamEdit_C6.bpl">Dream Editor Package</Excluded_Packages>
</Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">1</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;C:\cppcheck</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlFinalOutputDir><HistoryLists_hlFinalOutputDir Name="Count">2</HistoryLists_hlFinalOutputDir><HistoryLists_hlFinalOutputDir Name="Item0">bcb_debug</HistoryLists_hlFinalOutputDir><HistoryLists_hlFinalOutputDir Name="Item1">.</HistoryLists_hlFinalOutputDir></HistoryLists_hlFinalOutputDir><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib\debug;$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;C:\cppcheck</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">_DEBUG;NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlIntermediateOutputDir><HistoryLists_hlIntermediateOutputDir Name="Count">1</HistoryLists_hlIntermediateOutputDir><HistoryLists_hlIntermediateOutputDir Name="Item0">bcb_Debug</HistoryLists_hlIntermediateOutputDir></HistoryLists_hlIntermediateOutputDir></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
</ProjectExtensions>
<Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
<ItemGroup>
<CppCompile Include="src\checkautovariables.cpp">
<DependentOn>src\checkautovariables.h</DependentOn>
<BuildOrder>0</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkbufferoverrun.cpp">
<DependentOn>src\checkbufferoverrun.h</DependentOn>
<BuildOrder>20</BuildOrder>
<BuildOrder>1</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkclass.cpp">
<DependentOn>src\checkclass.h</DependentOn>
<BuildOrder>21</BuildOrder>
<BuildOrder>2</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkfunctionusage.cpp">
<DependentOn>src\checkfunctionusage.h</DependentOn>
<BuildOrder>22</BuildOrder>
<CppCompile Include="src\checkdangerousfunctions.cpp">
<DependentOn>src\checkdangerousfunctions.h</DependentOn>
<BuildOrder>3</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkheaders.cpp">
<DependentOn>src\checkheaders.h</DependentOn>
<BuildOrder>23</BuildOrder>
<BuildOrder>4</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkmemoryleak.cpp">
<DependentOn>src\checkmemoryleak.h</DependentOn>
<BuildOrder>24</BuildOrder>
<BuildOrder>5</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkother.cpp">
<DependentOn>src\checkother.h</DependentOn>
<BuildOrder>25</BuildOrder>
<BuildOrder>6</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkstl.cpp">
<DependentOn>src\checkstl.h</DependentOn>
<BuildOrder>7</BuildOrder>
</CppCompile>
<CppCompile Include="src\checkunusedfunctions.cpp">
<DependentOn>src\checkunusedfunctions.h</DependentOn>
<BuildOrder>8</BuildOrder>
</CppCompile>
<CppCompile Include="src\cppcheck.cpp">
<BuildOrder>26</BuildOrder>
<BuildOrder>9</BuildOrder>
</CppCompile>
<CppCompile Include="src\cppcheckexecutor.cpp">
<BuildOrder>27</BuildOrder>
<BuildOrder>10</BuildOrder>
</CppCompile>
<CppCompile Include="src\errormessage.cpp">
<DependentOn>src\errormessage.h</DependentOn>
<BuildOrder>28</BuildOrder>
<CppCompile Include="src\errorlogger.cpp">
<DependentOn>src\errorlogger.h</DependentOn>
<BuildOrder>11</BuildOrder>
</CppCompile>
<CppCompile Include="src\filelister.cpp">
<DependentOn>src\filelister.h</DependentOn>
<BuildOrder>29</BuildOrder>
<BuildOrder>12</BuildOrder>
</CppCompile>
<CppCompile Include="src\mathlib.cpp">
<DependentOn>src\mathlib.h</DependentOn>
<BuildOrder>13</BuildOrder>
</CppCompile>
<CppCompile Include="src\preprocessor.cpp">
<DependentOn>src\preprocessor.h</DependentOn>
<BuildOrder>30</BuildOrder>
<BuildOrder>14</BuildOrder>
</CppCompile>
<CppCompile Include="src\settings.cpp">
<BuildOrder>31</BuildOrder>
<BuildOrder>15</BuildOrder>
</CppCompile>
<CppCompile Include="src\threadexecutor.cpp">
<BuildOrder>16</BuildOrder>
</CppCompile>
<CppCompile Include="src\token.cpp">
<DependentOn>src\token.h</DependentOn>
<BuildOrder>32</BuildOrder>
<BuildOrder>17</BuildOrder>
</CppCompile>
<CppCompile Include="src\tokenize.cpp">
<DependentOn>src\tokenize.h</DependentOn>
<BuildOrder>33</BuildOrder>
</CppCompile>
<CppCompile Include="test\testbufferoverrun.cpp">
<BuildOrder>0</BuildOrder>
</CppCompile>
<CppCompile Include="test\testcharvar.cpp">
<BuildOrder>1</BuildOrder>
</CppCompile>
<CppCompile Include="test\testclass.cpp">
<BuildOrder>2</BuildOrder>
</CppCompile>
<CppCompile Include="test\testconstructors.cpp">
<BuildOrder>3</BuildOrder>
</CppCompile>
<CppCompile Include="test\testdivision.cpp">
<BuildOrder>4</BuildOrder>
</CppCompile>
<CppCompile Include="test\testfilelister.cpp">
<BuildOrder>5</BuildOrder>
</CppCompile>
<CppCompile Include="test\testfunctionusage.cpp">
<BuildOrder>6</BuildOrder>
</CppCompile>
<CppCompile Include="test\testincompletestatement.cpp">
<BuildOrder>7</BuildOrder>
</CppCompile>
<CppCompile Include="test\testmemleak.cpp">
<BuildOrder>8</BuildOrder>
</CppCompile>
<CppCompile Include="test\testmemleakmp.cpp">
<BuildOrder>9</BuildOrder>
</CppCompile>
<CppCompile Include="test\testother.cpp">
<BuildOrder>10</BuildOrder>
</CppCompile>
<CppCompile Include="test\testpreprocessor.cpp">
<BuildOrder>11</BuildOrder>
</CppCompile>
<CppCompile Include="test\testredundantif.cpp">
<BuildOrder>12</BuildOrder>
</CppCompile>
<CppCompile Include="test\testrunner.cpp">
<BuildOrder>13</BuildOrder>
</CppCompile>
<CppCompile Include="test\testsimplifytokens.cpp">
<BuildOrder>14</BuildOrder>
</CppCompile>
<CppCompile Include="test\testsuite.cpp">
<BuildOrder>15</BuildOrder>
</CppCompile>
<CppCompile Include="test\testtoken.cpp">
<BuildOrder>16</BuildOrder>
</CppCompile>
<CppCompile Include="test\testtokenize.cpp">
<BuildOrder>17</BuildOrder>
</CppCompile>
<CppCompile Include="test\testunusedprivfunc.cpp">
<BuildOrder>18</BuildOrder>
</CppCompile>
<CppCompile Include="test\testunusedvar.cpp">
<CppCompile Include="test\testautovariables.cpp">
<BuildOrder>19</BuildOrder>
</CppCompile>
<CppCompile Include="test\testbufferoverrun.cpp">
<BuildOrder>20</BuildOrder>
</CppCompile>
<CppCompile Include="test\testcharvar.cpp">
<BuildOrder>21</BuildOrder>
</CppCompile>
<CppCompile Include="test\testclass.cpp">
<BuildOrder>22</BuildOrder>
</CppCompile>
<CppCompile Include="test\testconstructors.cpp">
<BuildOrder>23</BuildOrder>
</CppCompile>
<CppCompile Include="test\testdangerousfunctions.cpp">
<BuildOrder>24</BuildOrder>
</CppCompile>
<CppCompile Include="test\testdivision.cpp">
<BuildOrder>25</BuildOrder>
</CppCompile>
<CppCompile Include="test\testincompletestatement.cpp">
<BuildOrder>26</BuildOrder>
</CppCompile>
<CppCompile Include="test\testmathlib.cpp">
<BuildOrder>27</BuildOrder>
</CppCompile>
<CppCompile Include="test\testmemleak.cpp">
<BuildOrder>28</BuildOrder>
</CppCompile>
<CppCompile Include="test\testother.cpp">
<BuildOrder>29</BuildOrder>
</CppCompile>
<CppCompile Include="test\testpreprocessor.cpp">
<BuildOrder>30</BuildOrder>
</CppCompile>
<CppCompile Include="test\testredundantif.cpp">
<BuildOrder>31</BuildOrder>
</CppCompile>
<CppCompile Include="test\testrunner.cpp">
<BuildOrder>32</BuildOrder>
</CppCompile>
<CppCompile Include="test\testsimplifytokens.cpp">
<BuildOrder>33</BuildOrder>
</CppCompile>
<CppCompile Include="test\teststl.cpp">
<BuildOrder>34</BuildOrder>
</CppCompile>
<CppCompile Include="test\testsuite.cpp">
<BuildOrder>35</BuildOrder>
</CppCompile>
<CppCompile Include="test\testtoken.cpp">
<BuildOrder>36</BuildOrder>
</CppCompile>
<CppCompile Include="test\testtokenize.cpp">
<BuildOrder>37</BuildOrder>
</CppCompile>
<CppCompile Include="test\testunusedfunctions.cpp">
<BuildOrder>38</BuildOrder>
</CppCompile>
<CppCompile Include="test\testunusedprivfunc.cpp">
<BuildOrder>39</BuildOrder>
</CppCompile>
<CppCompile Include="test\testunusedvar.cpp">
<BuildOrder>40</BuildOrder>
</CppCompile>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
</BuildConfiguration>