@@ -461,7 +461,7 @@ void CheckBufferOverrun::checkFunctionParameter(const Token &ftok, unsigned int
461461 return ;
462462
463463 // Check the parameter usage in the function scope..
464- for (const Token* ftok2 = func->functionScope ->classStart ; ftok2 != func->functionScope ->classEnd ; ftok2 = ftok2->next ()) {
464+ for (const Token* ftok2 = func->functionScope ->bodyStart ; ftok2 != func->functionScope ->bodyEnd ; ftok2 = ftok2->next ()) {
465465 if (Token::Match (ftok2, " if|for|switch|while (" )) {
466466 // bailout if there is buffer usage..
467467 if (bailoutIfSwitch (ftok2, parameter->declarationId ())) {
@@ -614,7 +614,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const std::vector<const st
614614
615615 const bool printPortability = _settings->isEnabled (Settings::PORTABILITY);
616616
617- for (const Token* const end = tok->scope ()->classEnd ; tok && tok != end; tok = tok->next ()) {
617+ for (const Token* const end = tok->scope ()->bodyEnd ; tok && tok != end; tok = tok->next ()) {
618618 if (declarationId != 0 && Token::Match (tok, " %varid% = new|malloc|realloc" , declarationId)) {
619619 // Abort
620620 break ;
@@ -899,7 +899,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const ArrayInfo &arrayInfo
899899{
900900 bool reassigned = false ;
901901
902- for (const Token* const end = tok->scope ()->classEnd ; tok != end; tok = tok->next ()) {
902+ for (const Token* const end = tok->scope ()->bodyEnd ; tok != end; tok = tok->next ()) {
903903 if (reassigned && tok->str () == " ;" )
904904 break ;
905905
@@ -918,7 +918,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, std::map<unsigned int, Arr
918918{
919919 unsigned int reassigned = 0 ;
920920
921- for (const Token* const end = tok->scope ()->classEnd ; tok != end; tok = tok->next ()) {
921+ for (const Token* const end = tok->scope ()->bodyEnd ; tok != end; tok = tok->next ()) {
922922 if (reassigned && tok->str () == " ;" ) {
923923 arrayInfos.erase (reassigned);
924924 reassigned = 0 ;
@@ -1233,7 +1233,7 @@ void CheckBufferOverrun::checkGlobalAndLocalVariable()
12331233 arrayInfos[var->declarationId ()] = ArrayInfo (&*var, symbolDatabase, var->declarationId ());
12341234 }
12351235 if (!arrayInfos.empty ())
1236- checkScope (scope->classStart ? scope->classStart : _tokenizer->tokens (), arrayInfos);
1236+ checkScope (scope->bodyStart ? scope->bodyStart : _tokenizer->tokens (), arrayInfos);
12371237 }
12381238
12391239 const std::vector<const std::string*> v;
@@ -1243,7 +1243,7 @@ void CheckBufferOverrun::checkGlobalAndLocalVariable()
12431243 for (std::size_t i = 0 ; i < functions; ++i) {
12441244 const Scope * scope = symbolDatabase->functionScopes [i];
12451245
1246- for (const Token *tok = scope->classStart ; tok != scope->classEnd ; tok = tok->next ()) {
1246+ for (const Token *tok = scope->bodyStart ; tok != scope->bodyEnd ; tok = tok->next ()) {
12471247 if (!Token::Match (tok, " [*;{}] %var% =" ))
12481248 continue ;
12491249
@@ -1355,9 +1355,9 @@ void CheckBufferOverrun::checkStructVariable()
13551355 // check for member variables
13561356 if (func_scope->functionOf == scope) {
13571357 // only check non-empty function
1358- if (func_scope->classStart ->next () != func_scope->classEnd ) {
1358+ if (func_scope->bodyStart ->next () != func_scope->bodyEnd ) {
13591359 // start checking after the {
1360- const Token *tok = func_scope->classStart ->next ();
1360+ const Token *tok = func_scope->bodyStart ->next ();
13611361 checkScope (tok, arrayInfo);
13621362 }
13631363 }
@@ -1370,7 +1370,7 @@ void CheckBufferOverrun::checkStructVariable()
13701370 std::vector<const std::string*> varname = { nullptr , &arrayInfo.varname () };
13711371
13721372 // search the function and it's parameters
1373- for (const Token *tok3 = func_scope->classDef ; tok3 && tok3 != func_scope->classEnd ; tok3 = tok3->next ()) {
1373+ for (const Token *tok3 = func_scope->classDef ; tok3 && tok3 != func_scope->bodyEnd ; tok3 = tok3->next ()) {
13741374 // search for the class/struct name
13751375 if (tok3->str () != scope->className )
13761376 continue ;
@@ -1442,7 +1442,7 @@ void CheckBufferOverrun::checkStructVariable()
14421442
14431443 // Goto end of statement.
14441444 const Token *checkTok = nullptr ;
1445- while (tok3 && tok3 != func_scope->classEnd ) {
1445+ while (tok3 && tok3 != func_scope->bodyEnd ) {
14461446 // End of statement.
14471447 if (tok3->str () == " ;" ) {
14481448 checkTok = tok3;
@@ -1703,7 +1703,7 @@ void CheckBufferOverrun::checkBufferAllocatedWithStrlen()
17031703 const std::size_t functions = symbolDatabase->functionScopes .size ();
17041704 for (std::size_t i = 0 ; i < functions; ++i) {
17051705 const Scope * scope = symbolDatabase->functionScopes [i];
1706- for (const Token *tok = scope->classStart ->next (); tok && tok != scope->classEnd ; tok = tok->next ()) {
1706+ for (const Token *tok = scope->bodyStart ->next (); tok && tok != scope->bodyEnd ; tok = tok->next ()) {
17071707 const unsigned int dstVarId = tok->varId ();
17081708 if (!dstVarId || tok->strAt (1 ) != " =" )
17091709 continue ;
@@ -1729,7 +1729,7 @@ void CheckBufferOverrun::checkBufferAllocatedWithStrlen()
17291729
17301730 // To avoid false positives and added complexity, we will only look for
17311731 // improper usage of the buffer within the block that it was allocated
1732- for (const Token* const end = tok->scope ()->classEnd ; tok && tok->next () && tok != end; tok = tok->next ()) {
1732+ for (const Token* const end = tok->scope ()->bodyEnd ; tok && tok->next () && tok != end; tok = tok->next ()) {
17331733 // If the buffers are modified, we can't be sure of their sizes
17341734 if (tok->varId () == srcVarId || tok->varId () == dstVarId)
17351735 break ;
@@ -1753,7 +1753,7 @@ void CheckBufferOverrun::checkStringArgument()
17531753 const std::size_t functions = symbolDatabase->functionScopes .size ();
17541754 for (std::size_t functionIndex = 0 ; functionIndex < functions; ++functionIndex) {
17551755 const Scope * const scope = symbolDatabase->functionScopes [functionIndex];
1756- for (const Token *tok = scope->classStart ; tok != scope->classEnd ; tok = tok->next ()) {
1756+ for (const Token *tok = scope->bodyStart ; tok != scope->bodyEnd ; tok = tok->next ()) {
17571757 if (!Token::Match (tok, " %name% (" ) || !_settings->library .hasminsize (tok->str ()))
17581758 continue ;
17591759
@@ -1804,7 +1804,7 @@ void CheckBufferOverrun::checkInsecureCmdLineArgs()
18041804 continue ;
18051805
18061806 // Jump to the opening curly brace
1807- tok = symbolDatabase->functionScopes [i]->classStart ;
1807+ tok = symbolDatabase->functionScopes [i]->bodyStart ;
18081808
18091809 // Search within main() for possible buffer overruns involving argv
18101810 for (const Token* end = tok->link (); tok != end; tok = tok->next ()) {
@@ -1925,7 +1925,7 @@ void CheckBufferOverrun::arrayIndexThenCheck()
19251925 const std::size_t functions = symbolDatabase->functionScopes .size ();
19261926 for (std::size_t i = 0 ; i < functions; ++i) {
19271927 const Scope * const scope = symbolDatabase->functionScopes [i];
1928- for (const Token *tok = scope->classStart ; tok && tok != scope->classEnd ; tok = tok->next ()) {
1928+ for (const Token *tok = scope->bodyStart ; tok && tok != scope->bodyEnd ; tok = tok->next ()) {
19291929 if (Token::simpleMatch (tok, " sizeof (" )) {
19301930 tok = tok->linkAt (1 );
19311931 continue ;
@@ -2000,7 +2000,7 @@ Check::FileInfo* CheckBufferOverrun::getFileInfo(const Tokenizer *tokenizer, con
20002000 const std::size_t functions = symbolDB->functionScopes .size ();
20012001 for (std::size_t i = 0 ; i < functions; ++i) {
20022002 const Scope * const scope = symbolDB->functionScopes [i];
2003- for (const Token *tok = scope->classStart ; tok && tok != scope->classEnd ; tok = tok->next ()) {
2003+ for (const Token *tok = scope->bodyStart ; tok && tok != scope->bodyEnd ; tok = tok->next ()) {
20042004 if (Token::Match (tok, " %var% [" ) &&
20052005 Token::Match (tok->linkAt (1 ), " ] !![" ) &&
20062006 tok->variable () &&
0 commit comments