From 71d9d3141c042f9f21b983482c4bd16fbb69c21d Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Sat, 29 Dec 2007 14:07:49 +0000 Subject: [PATCH] declaration may be NULL for abstract declarators [r18830] --- parser.c | 7 ++++++- parsetest/cp_error017.c | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 parsetest/cp_error017.c diff --git a/parser.c b/parser.c index 02288e9..e16f4d9 100644 --- a/parser.c +++ b/parser.c @@ -2039,7 +2039,12 @@ static construct_type_t *parse_function_declarator(declaration_t *declaration) { eat('('); - type_t *type = allocate_type_zero(TYPE_FUNCTION, declaration->source_position); + type_t *type; + if(declaration != NULL) { + type = allocate_type_zero(TYPE_FUNCTION, declaration->source_position); + } else { + type = allocate_type_zero(TYPE_FUNCTION, token.source_position); + } declaration_t *parameters = parse_parameters(&type->function); if(declaration != NULL) { diff --git a/parsetest/cp_error017.c b/parsetest/cp_error017.c new file mode 100644 index 0000000..235f6fd --- /dev/null +++ b/parsetest/cp_error017.c @@ -0,0 +1,7 @@ +int main(void) { + void (*var)(void); + + var = (void (*)(void)) 0; + + return (int) var; +} -- 2.20.1