diff --git a/checkbufferoverrun.cpp b/checkbufferoverrun.cpp index f1ebbe63d..aa095031a 100644 --- a/checkbufferoverrun.cpp +++ b/checkbufferoverrun.cpp @@ -75,7 +75,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const TOKEN *tok, co // Array index.. if ( varid > 0 ) { - if ( TOKEN::Match(tok, "%varid% [ %num% ]", 0, 0, varid) ) + if ( TOKEN::Match(tok, "%varid% [ %num% ]", 0, varid) ) { const char *num = tok->strAt(2); if (strtol(num, NULL, 10) >= size) @@ -112,7 +112,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const TOKEN *tok, co // Array index.. if ( varid > 0 ) { - if ( !tok->isName() && !TOKEN::Match(tok, "[.&]") && TOKEN::Match(tok->next(), "%varid% [ %num% ]", 0, 0, varid) ) + if ( !tok->isName() && !TOKEN::Match(tok, "[.&]") && TOKEN::Match(tok->next(), "%varid% [ %num% ]", 0, varid) ) { const char *num = tok->strAt(3); if (strtol(num, NULL, 10) >= size) @@ -138,8 +138,8 @@ void CheckBufferOverrunClass::CheckBufferOverrun_CheckScope(const TOKEN *tok, co { if ( TOKEN::Match(tok, "memset|memcpy|memmove|memcmp|strncpy|fgets") ) { - if ( TOKEN::Match(tok->next(), "( %varid% , %num% , %num% )", 0, 0, varid) || - TOKEN::Match(tok->next(), "( %var% , %varid% , %num% )", 0, 0, varid) ) + if ( TOKEN::Match(tok->next(), "( %varid% , %num% , %num% )", 0, varid) || + TOKEN::Match(tok->next(), "( %var% , %varid% , %num% )", 0, varid) ) { const char *num = tok->strAt(6); if ( atoi(num) > total_size ) diff --git a/token.cpp b/token.cpp index 958f73c9a..9946fb610 100644 --- a/token.cpp +++ b/token.cpp @@ -164,7 +164,7 @@ bool TOKEN::simpleMatch(const TOKEN *tok, const char pattern[]) return true; } -bool TOKEN::Match(const TOKEN *tok, const char pattern[], const char *varname1[], const char *varname2[], unsigned int varid) +bool TOKEN::Match(const TOKEN *tok, const char pattern[], const char *varname1[], unsigned int varid) { const char *p = pattern; while ( *p ) @@ -198,8 +198,6 @@ bool TOKEN::Match(const TOKEN *tok, const char pattern[], const char *varname1[] if (str[0] == 0) return true; - bool useVar1; - // Compare the first character of the string for optimization reasons // before doing more detailed checks. bool patternIdentified = false; @@ -221,25 +219,23 @@ bool TOKEN::Match(const TOKEN *tok, const char pattern[], const char *varname1[] } // Variable name.. - else if ((useVar1 = (strcmp(str,"%var1%")==0)) || strcmp(str,"%var2%")==0) + else if (strcmp(str, "%var1%") == 0) { - const char **varname = useVar1 ? varname1 : varname2; - - if ( ! varname ) + if ( ! varname1 ) return false; - if (tok->_str != varname[0]) + if (tok->_str != varname1[0]) return false; - for ( int i = 1; varname[i]; i++ ) + for ( int i = 1; varname1[i]; i++ ) { if ( !(tok->tokAt(2)) ) return false; - if ( strcmp(tok->strAt( 1), ".") ) + if ( strcmp(tok->strAt(1), ".") ) return false; - if ( strcmp(tok->strAt( 2), varname[i]) ) + if ( strcmp(tok->strAt(2), varname1[i]) ) return false; tok = tok->tokAt(2); @@ -353,11 +349,11 @@ bool TOKEN::isStandardType() const //--------------------------------------------------------------------------- -const TOKEN *TOKEN::findmatch(const TOKEN *tok, const char pattern[], const char *varname1[], const char *varname2[]) +const TOKEN *TOKEN::findmatch(const TOKEN *tok, const char pattern[], const char *varname1[]) { for ( ; tok; tok = tok->next()) { - if ( TOKEN::Match(tok, pattern, varname1, varname2) ) + if ( TOKEN::Match(tok, pattern, varname1) ) return tok; } return 0; diff --git a/token.h b/token.h index 03132717c..402fa5927 100644 --- a/token.h +++ b/token.h @@ -85,7 +85,6 @@ public: * "%bool%" true or false * "%str%" Any token starting with "-character (C-string). * "%var1%" Match with parameter varname1 - * "%var2%" Match with parameter varname2 * "%varid%" Match with parameter varid * "[abc]" Any of the characters 'a' or 'b' or 'c' * "int|void|char" Any of the strings, int, void or char @@ -102,18 +101,17 @@ public: * @param tok List of tokens to be compared to the pattern * @param pattern The pattern against which the tokens are compared, * e.g. "const" or ") const|volatile| {". - * @param varname1 Used with pattern "%var1%" and "%var2%" - * @param varname2 Used with pattern "%var1%" and "%var2%" + * @param varname1 Used with pattern "%var1%" * @return true if given token matches with given pattern * false if given token does not match with given pattern */ - static bool Match(const TOKEN *tok, const char pattern[], const char *varname1[]=0, const char *varname2[]=0, unsigned int varid=0); + static bool Match(const TOKEN *tok, const char pattern[], const char *varname1[]=0, unsigned int varid=0); bool isName() const; bool isNumber() const; bool isBoolean() const; bool isStandardType() const; - static const TOKEN *findmatch(const TOKEN *tok, const char pattern[], const char *varname1[]=0, const char *varname2[]=0); + static const TOKEN *findmatch(const TOKEN *tok, const char pattern[], const char *varname1[]=0); /** * Needle is build from multiple alternatives. If one of diff --git a/tokenize.cpp b/tokenize.cpp index 21f46e6b1..78950de6e 100644 --- a/tokenize.cpp +++ b/tokenize.cpp @@ -671,7 +671,7 @@ void Tokenizer::setVarId() const std::string pattern(std::string("%varid% . ") + tok->strAt(2)); for ( TOKEN *tok2 = tok; tok2; tok2 = tok2->next() ) { - if ( TOKEN::Match(tok2, pattern.c_str(), 0, 0, tok->varId()) ) + if ( TOKEN::Match(tok2, pattern.c_str(), 0, tok->varId()) ) tok2->next()->next()->varId( _varId ); } } @@ -1459,7 +1459,7 @@ bool Tokenizer::simplifyKnownVariables() break; // Replace variable with numeric constant.. - if ( TOKEN::Match(tok3, "if ( %varid% )", 0, 0, varid) ) + if ( TOKEN::Match(tok3, "if ( %varid% )", 0, varid) ) { tok3 = tok3->next()->next(); tok3->setstr( tok2->strAt(2) );