diff --git a/parser.c b/parser.c index 798f2dd..90d7e86 100644 --- a/parser.c +++ b/parser.c @@ -1619,6 +1619,7 @@ static bool parser_parse_statement(parser_t *parser, ast_block *block, ast_expre if (expected->expression.next->expression.vtype != TYPE_VOID) { parseerror(parser, "return without value"); } + *out = NULL; } return true; } @@ -1723,7 +1724,7 @@ cleanup: static ast_expression* parser_parse_statement_or_block(parser_t *parser) { - ast_expression *expr; + ast_expression *expr = NULL; if (parser->tok == '{') return (ast_expression*)parser_parse_block(parser); if (!parser_parse_statement(parser, NULL, &expr))