From 89f42b8b4d1d6975715a99ee566f9999438a654f Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Thu, 26 Apr 2012 13:17:25 +0200 Subject: [PATCH] Improve error recovery in parse_do() and do not return an error statement. --- parser.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/parser.c b/parser.c index 0f7f557..d96e598 100644 --- a/parser.c +++ b/parser.c @@ -9483,19 +9483,18 @@ static statement_t *parse_do(void) statement->do_while.body = parse_loop_body(statement); rem_anchor_token(T_while); - expect(T_while, end_error); + expect(T_while, end_error0); +end_error0:; expression_t *const cond = parse_condition(); statement->do_while.condition = cond; /* §6.8.5:2 The controlling expression of an iteration statement shall * have scalar type. */ semantic_condition(cond, "condition of 'do-while'-statement"); - expect(';', end_error); + expect(';', end_error1); +end_error1: POP_PARENT(); return statement; -end_error: - POP_PARENT(); - return create_error_statement(); } /** -- 2.20.1