fix #2991 (segmentation fault of cppcheck ( ::y(){x} ))
This commit is contained in:
parent
2ef4e6fb59
commit
f7b9d4d726
|
@ -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() == "::")
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue