From 28cece257754e925d35f4ca33747fd6b9a1f5269 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Thu, 13 Dec 2007 09:51:08 +0000 Subject: [PATCH] Do no crash on empty statement expressions ({}). [r18727] --- parser.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/parser.c b/parser.c index ba6e007..aee14ce 100644 --- a/parser.c +++ b/parser.c @@ -3147,19 +3147,17 @@ static expression_t *parse_statement_expression(void) } /* find last statement and use its type */ - assert(statement->kind == STATEMENT_COMPOUND); - const statement_t *iter = statement->compound.statements; - const statement_t *last_statement = NULL; - for( ; iter != NULL; iter = iter->base.next) { - last_statement = iter; - } - - if(last_statement->kind == STATEMENT_EXPRESSION) { - expression->base.datatype - = last_statement->expression.expression->base.datatype; - } else { - expression->base.datatype = type_void; + type_t *type = type_void; + const statement_t *stmt = statement->compound.statements; + if (stmt != NULL) { + while (stmt->base.next != NULL) + stmt = stmt->base.next; + + if (stmt->kind == STATEMENT_EXPRESSION) { + type = stmt->expression.expression->base.datatype; + } } + expression->base.datatype = type; expect(')'); -- 2.20.1