Check for valid decl_specifier_seq when parsing declaration statements.

This commit is contained in:
Roberto Raggi
2009-10-20 11:41:19 +02:00
parent 63c2ceae3b
commit c5cf70c6b8

View File

@@ -2402,10 +2402,18 @@ bool Parser::parseNamespaceAliasDefinition(DeclarationAST *&node)
bool Parser::parseDeclarationStatement(StatementAST *&node) bool Parser::parseDeclarationStatement(StatementAST *&node)
{ {
unsigned start = cursor();
DeclarationAST *declaration = 0; DeclarationAST *declaration = 0;
if (! parseBlockDeclaration(declaration)) if (! parseBlockDeclaration(declaration))
return false; return false;
if (SimpleDeclarationAST *simpleDeclaration = declaration->asSimpleDeclaration()) {
if (! simpleDeclaration->decl_specifier_seq) {
rewind(start);
return false;
}
}
DeclarationStatementAST *ast = new (_pool) DeclarationStatementAST; DeclarationStatementAST *ast = new (_pool) DeclarationStatementAST;
ast->declaration = declaration; ast->declaration = declaration;
node = ast; node = ast;