#6732 segmentation fault (invalid code) in Tokenizer::simplifyEmptyNamespaces. Add testcase, segfault seems to have been fixed by previous commit. Run astyle

This commit is contained in:
Alexander Mai 2015-06-01 13:46:13 +02:00
parent b81e82d462
commit fb2bd978ad
2 changed files with 11 additions and 5 deletions

View File

@ -4503,10 +4503,10 @@ Token *Tokenizer::simplifyAddBracesPair(Token *tok, bool commandWithCondition)
tokAfterCondition->previous()->insertToken("{"); tokAfterCondition->previous()->insertToken("{");
Token * tokOpenBrace = tokAfterCondition->previous(); Token * tokOpenBrace = tokAfterCondition->previous();
Token * tokEnd = tokAfterCondition->linkAt(1)->linkAt(2)->linkAt(1); Token * tokEnd = tokAfterCondition->linkAt(1)->linkAt(2)->linkAt(1);
if (!tokEnd) { if (!tokEnd) {
syntaxError(tokAfterCondition); syntaxError(tokAfterCondition);
return nullptr; return nullptr;
} }
tokEnd->insertToken("}"); tokEnd->insertToken("}");
Token * tokCloseBrace = tokEnd->next(); Token * tokCloseBrace = tokEnd->next();

View File

@ -95,7 +95,8 @@ private:
TEST_CASE(garbageCode54); // #6722 TEST_CASE(garbageCode54); // #6722
TEST_CASE(garbageCode55); // #6724 TEST_CASE(garbageCode55); // #6724
TEST_CASE(garbageCode56); // #6713 TEST_CASE(garbageCode56); // #6713
TEST_CASE(garbageCode57); // #6733 TEST_CASE(garbageCode57); // #6733
TEST_CASE(garbageCode58); // #6732
TEST_CASE(garbageValueFlow); TEST_CASE(garbageValueFlow);
TEST_CASE(garbageSymbolDatabase); TEST_CASE(garbageSymbolDatabase);
@ -545,6 +546,11 @@ private:
ASSERT_THROW(checkCode("{ } if () try { } catch (...) B::~B { }"), InternalError); ASSERT_THROW(checkCode("{ } if () try { } catch (...) B::~B { }"), InternalError);
} }
void garbageCode58() { // #6732
ASSERT_THROW(checkCode("{ }> {= ~A()^{} }P { }"), InternalError);
}
void garbageValueFlow() { void garbageValueFlow() {
// #6089 // #6089
const char* code = "{} int foo(struct, x1, struct x2, x3, int, x5, x6, x7)\n" const char* code = "{} int foo(struct, x1, struct x2, x3, int, x5, x6, x7)\n"