diff --git a/src/checkclass.cpp b/src/checkclass.cpp index 788afc0c2..20100c4fc 100644 --- a/src/checkclass.cpp +++ b/src/checkclass.cpp @@ -544,13 +544,13 @@ void CheckClass::privateFunctions() else if (Token::Match(tok2, "%var% (")) { // Remove function from FuncList - for (std::list::iterator it = FuncList.begin(); it != FuncList.end(); ++it) + std::list::iterator it = FuncList.begin(); + while (it != FuncList.end()) { if (tok2->str() == (*it)->str()) - { - FuncList.remove(*it); - break; - } + FuncList.erase(it++); + else + it++; } } } diff --git a/test/testunusedprivfunc.cpp b/test/testunusedprivfunc.cpp index 56ed7f4f3..386cf09e9 100644 --- a/test/testunusedprivfunc.cpp +++ b/test/testunusedprivfunc.cpp @@ -45,6 +45,7 @@ private: TEST_CASE(ctor); TEST_CASE(classInClass); + TEST_CASE(sameFunctionNames); } @@ -254,6 +255,23 @@ private: ASSERT_EQUALS("", errout.str()); } + + void sameFunctionNames() + { + check("class A\n" + "{\n" + "public:\n" + " void a()\n" + " {\n" + " f(1);\n" + " }\n" + "\n" + "private:\n" + " void f() { }\n" + " void f(int) { }\n" + "};"); + ASSERT_EQUALS("", errout.str()); + } }; REGISTER_TEST(TestUnusedPrivateFunction)