declaration may be NULL for abstract declarators
authorMatthias Braun <matze@braunis.de>
Sat, 29 Dec 2007 14:07:49 +0000 (14:07 +0000)
committerMatthias Braun <matze@braunis.de>
Sat, 29 Dec 2007 14:07:49 +0000 (14:07 +0000)
[r18830]

parser.c
parsetest/cp_error017.c [new file with mode: 0644]

index 02288e9..e16f4d9 100644 (file)
--- 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 (file)
index 0000000..235f6fd
--- /dev/null
@@ -0,0 +1,7 @@
+int main(void) {
+       void (*var)(void);
+
+       var = (void (*)(void)) 0;
+
+       return (int) var;
+}