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
|
else
|
||||||
tok1 = (*tok)->tokAt(-2);
|
tok1 = (*tok)->tokAt(-2);
|
||||||
|
|
||||||
|
// syntax error?
|
||||||
|
if (!tok1)
|
||||||
|
return;
|
||||||
|
|
||||||
// back up to head of path
|
// back up to head of path
|
||||||
while (tok1 && tok1->previous() && tok1->previous()->str() == "::")
|
while (tok1 && tok1->previous() && tok1->previous()->str() == "::")
|
||||||
{
|
{
|
||||||
|
|
|
@ -121,6 +121,7 @@ private:
|
||||||
TEST_CASE(symboldatabase16); // ticket #2637
|
TEST_CASE(symboldatabase16); // ticket #2637
|
||||||
TEST_CASE(symboldatabase17); // ticket #2657
|
TEST_CASE(symboldatabase17); // ticket #2657
|
||||||
TEST_CASE(symboldatabase18); // ticket #2865
|
TEST_CASE(symboldatabase18); // ticket #2865
|
||||||
|
TEST_CASE(symboldatabase19); // ticket #2991 (segmentation fault)
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_isVariableDeclarationCanHandleNull()
|
void test_isVariableDeclarationCanHandleNull()
|
||||||
|
@ -878,6 +879,14 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void symboldatabase19()
|
||||||
|
{
|
||||||
|
// ticket #2991 - segmentation fault
|
||||||
|
check("::y(){x}\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_TEST(TestSymbolDatabase)
|
REGISTER_TEST(TestSymbolDatabase)
|
||||||
|
|
Loading…
Reference in New Issue