#7235 segmentation fault (invalid code) in TokenList::createAst

This commit is contained in:
amai2012 2015-12-26 20:26:07 +01:00
parent 36a6599386
commit 081f443b2a
2 changed files with 7 additions and 0 deletions

View File

@ -981,6 +981,8 @@ static Token * createAstAtToken(Token *tok, bool cpp)
compileExpression(tok2, state2); compileExpression(tok2, state2);
Token * const semicolon2 = tok2; Token * const semicolon2 = tok2;
if (!semicolon2)
return nullptr; // invalid code #7235
tok2 = tok2->next(); tok2 = tok2->next();
AST_state state3(cpp); AST_state state3(cpp);
compileExpression(tok2, state3); compileExpression(tok2, state3);

View File

@ -213,6 +213,7 @@ private:
TEST_CASE(garbageCode162); // #7208 TEST_CASE(garbageCode162); // #7208
TEST_CASE(garbageCode163); // #7228 TEST_CASE(garbageCode163); // #7228
TEST_CASE(garbageCode164); // #7234 TEST_CASE(garbageCode164); // #7234
TEST_CASE(garbageCode165); // #7235
TEST_CASE(garbageValueFlow); TEST_CASE(garbageValueFlow);
TEST_CASE(garbageSymbolDatabase); TEST_CASE(garbageSymbolDatabase);
TEST_CASE(garbageAST); TEST_CASE(garbageAST);
@ -1405,6 +1406,10 @@ private:
ASSERT_THROW(checkCode("class d{k p;}(){d::d():B<()}", false), InternalError); ASSERT_THROW(checkCode("class d{k p;}(){d::d():B<()}", false), InternalError);
} }
void garbageCode165() {
//7235
checkCode("for(;..)", false);
}
}; };
REGISTER_TEST(TestGarbage) REGISTER_TEST(TestGarbage)