diff --git a/lib/checkstl.cpp b/lib/checkstl.cpp index d04d4e9cc..1e5def01e 100644 --- a/lib/checkstl.cpp +++ b/lib/checkstl.cpp @@ -1162,13 +1162,7 @@ void CheckStl::uselessCalls() if (Token::Match(tok, "%var% . compare (") && tok->varId() == tok->tokAt(3)->link()->tokAt(-1)->varId()) { uselessCallsReturnValueError(tok, tok->tokAt(2)); - } else if ((Token::Match(tok, "%var% . compare ( %var%") || - Token::Match(tok, "%var% . find ( %var%") || - Token::Match(tok, "%var% . rfind ( %var%") || - Token::Match(tok, "%var% . find_first_not_of ( %var%") || - Token::Match(tok, "%var% . find_first_of ( %var%") || - Token::Match(tok, "%var% . find_last_not_of ( %var%") || - Token::Match(tok, "%var% . find_last_of ( %var%")) && + } else if (Token::Match(tok, "%var% . compare|find|rfind|find_first_not_of|find_first_of|find_last_not_of|find_last_of ( %var% ,") && tok->varId() == tok->tokAt(4)->varId()) { uselessCallsReturnValueError(tok->tokAt(4), tok->tokAt(2)); } else if (Token::Match(tok, "%var% . swap ( %var% )") && diff --git a/test/teststl.cpp b/test/teststl.cpp index 526bd1225..52c8e9a67 100644 --- a/test/teststl.cpp +++ b/test/teststl.cpp @@ -1509,6 +1509,14 @@ private: "[test.cpp:8]: (performance) Function \'substr\' useless call. Function create copy " "of the \'s2\' object.\n",errout.str()); + check("#include \n" + "int main()\n" + "{\n" + " std::string str = \"a1b1\";\n" + " return str.find(str[1], 2);\n" + "}"); + ASSERT_EQUALS("", errout.str()); + } };