Introduced a few paranoia checks.

This commit is contained in:
Roberto Raggi
2010-01-26 12:45:58 +01:00
parent 3bb70c1c49
commit df11fc95f9

View File

@@ -1603,9 +1603,16 @@ bool Parser::parseClassSpecifier(SpecifierListAST *&node)
unsigned start_declaration = cursor();
DeclarationAST *declaration = 0;
if (parseMemberSpecification(declaration)) {
*declaration_ptr = new (_pool) DeclarationListAST;
(*declaration_ptr)->value = declaration;
declaration_ptr = &(*declaration_ptr)->next;
if (declaration) { // paranoia check
*declaration_ptr = new (_pool) DeclarationListAST;
(*declaration_ptr)->value = declaration;
declaration_ptr = &(*declaration_ptr)->next;
}
if (cursor() == start_declaration) { // more paranoia
rewind(start_declaration + 1);
skipUntilDeclaration();
}
} else {
_translationUnit->error(start_declaration, "expected a declaration");
rewind(start_declaration + 1);