From: Christoph Mallon Date: Fri, 8 Aug 2008 07:54:31 +0000 (+0000) Subject: Allow attributes before/between/after * in declarators (partially fixing cp_error045). X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=e31c777bacad8594901f0a518011051bd9d7e109;p=cparser Allow attributes before/between/after * in declarators (partially fixing cp_error045). [r21060] --- diff --git a/parser.c b/parser.c index 057c0e6..edab497 100644 --- a/parser.c +++ b/parser.c @@ -3663,6 +3663,8 @@ static construct_type_t *parse_inner_declarator(declaration_t *declaration, construct_type_t *last = NULL; gnu_attribute_t *attributes = NULL; + decl_modifiers_t modifiers = parse_attributes(&attributes); + /* pointers */ while(token.type == '*') { construct_type_t *type = parse_pointer_declarator(); @@ -3674,10 +3676,10 @@ static construct_type_t *parse_inner_declarator(declaration_t *declaration, last->next = type; last = type; } - } - /* TODO: find out if this is correct */ - decl_modifiers_t modifiers = parse_attributes(&attributes); + /* TODO: find out if this is correct */ + modifiers |= parse_attributes(&attributes); + } construct_type_t *inner_types = NULL; @@ -3741,7 +3743,7 @@ static construct_type_t *parse_inner_declarator(declaration_t *declaration, } declarator_finished: - modifiers = parse_attributes(&attributes); + modifiers |= parse_attributes(&attributes); if (declaration != NULL) { declaration->modifiers |= modifiers; }