Sanitize pointer()
diff mbox

Message ID E1LhIYN-00042T-DM@ZenIV.linux.org.uk
State Mainlined, archived
Headers show

Commit Message

Al Viro March 11, 2009, 7:08 a.m. UTC
There's no need to concat the context list into (empty) one of new node,
only to free the original one.  Moving the pointer to list instead works
fine...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 parse.c |   20 +++++---------------
 1 files changed, 5 insertions(+), 15 deletions(-)

Patch
diff mbox

diff --git a/parse.c b/parse.c
index 28bc0c9..f16d321 100644
--- a/parse.c
+++ b/parse.c
@@ -1592,28 +1592,18 @@  static struct token *direct_declarator(struct token *token, struct decl_state *c
 
 static struct token *pointer(struct token *token, struct decl_state *ctx)
 {
-	unsigned long modifiers;
-	struct symbol *base_type;
-
-	modifiers = ctx->ctype.modifiers;
-	base_type = ctx->ctype.base_type;
-
 	while (match_op(token,'*')) {
 		struct symbol *ptr = alloc_symbol(token->pos, SYM_PTR);
-		ptr->ctype.modifiers = modifiers;
+		ptr->ctype.modifiers = ctx->ctype.modifiers;
+		ptr->ctype.base_type = ctx->ctype.base_type;
 		ptr->ctype.as = ctx->ctype.as;
-		concat_ptr_list((struct ptr_list *)ctx->ctype.contexts,
-				(struct ptr_list **)&ptr->ctype.contexts);
-		ptr->ctype.base_type = base_type;
-
-		base_type = ptr;
+		ptr->ctype.contexts = ctx->ctype.contexts;
 		ctx->ctype.modifiers = 0;
-		ctx->ctype.base_type = base_type;
+		ctx->ctype.base_type = ptr;
 		ctx->ctype.as = 0;
-		free_ptr_list(&ctx->ctype.contexts);
+		ctx->ctype.contexts = NULL;
 
 		token = handle_qualifiers(token->next, ctx);
-		modifiers = ctx->ctype.modifiers;
 		ctx->ctype.base_type->endpos = token->pos;
 	}
 	return token;