fix #2991 (segmentation fault of cppcheck ( ::y(){x} ))

This commit is contained in:
Robert Reif 2011-08-11 17:57:54 -04:00
parent 2ef4e6fb59
commit f7b9d4d726
2 changed files with 13 additions and 0 deletions

View File

@ -1008,6 +1008,10 @@ void SymbolDatabase::addFunction(Scope **scope, const Token **tok, const Token *
else
tok1 = (*tok)->tokAt(-2);
// syntax error?
if (!tok1)
return;
// back up to head of path
while (tok1 && tok1->previous() && tok1->previous()->str() == "::")
{

View File

@ -121,6 +121,7 @@ private:
TEST_CASE(symboldatabase16); // ticket #2637
TEST_CASE(symboldatabase17); // ticket #2657
TEST_CASE(symboldatabase18); // ticket #2865
TEST_CASE(symboldatabase19); // ticket #2991 (segmentation fault)
}
void test_isVariableDeclarationCanHandleNull()
@ -878,6 +879,14 @@ private:
ASSERT_EQUALS("", errout.str());
}
void symboldatabase19()
{
// ticket #2991 - segmentation fault
check("::y(){x}\n");
ASSERT_EQUALS("", errout.str());
}
};
REGISTER_TEST(TestSymbolDatabase)