Throw syntaxError when encounter one in symboldatabase (fixes #5572)

This commit is contained in:
PKEuS 2014-03-27 19:06:13 +01:00
parent efe3f834be
commit a6ca3cf2cf
2 changed files with 8 additions and 13 deletions

View File

@ -147,8 +147,7 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
// make sure we have valid code // make sure we have valid code
if (!tok2) { if (!tok2) {
scopeList.pop_back(); _tokenizer->syntaxError(tok);
break;
} }
} }
@ -157,8 +156,7 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
// make sure we have valid code // make sure we have valid code
if (!new_scope->classEnd) { if (!new_scope->classEnd) {
scopeList.pop_back(); _tokenizer->syntaxError(tok);
break;
} }
// make the new scope the current scope // make the new scope the current scope

View File

@ -1402,16 +1402,12 @@ private:
void symboldatabase14() { void symboldatabase14() {
// ticket #2589 - segmentation fault // ticket #2589 - segmentation fault
check("struct B : A\n"); ASSERT_THROW(check("struct B : A\n"), InternalError);
ASSERT_EQUALS("", errout.str());
} }
void symboldatabase15() { void symboldatabase15() {
// ticket #2591 - segmentation fault // ticket #2591 - segmentation fault
check("struct A :\n"); ASSERT_THROW(check("struct A :\n"), InternalError);
ASSERT_EQUALS("", errout.str());
} }
void symboldatabase16() { void symboldatabase16() {
@ -1444,9 +1440,7 @@ private:
void symboldatabase20() { void symboldatabase20() {
// ticket #3013 - segmentation fault // ticket #3013 - segmentation fault
check("struct x : virtual y\n"); ASSERT_THROW(check("struct x : virtual y\n"), InternalError);
ASSERT_EQUALS("", errout.str());
} }
void symboldatabase21() { void symboldatabase21() {
@ -1851,6 +1845,9 @@ private:
GET_SYMBOL_DB("{ }; void namespace A::f; { g() { int } }"); GET_SYMBOL_DB("{ }; void namespace A::f; { g() { int } }");
(void)db; (void)db;
} }
{
ASSERT_THROW(GET_SYMBOL_DB("class Foo {}; class Bar : public Foo"), InternalError);
}
} }
void findFunction1() { void findFunction1() {