The current code looks strange, I think it used to remove the symbol from ->symbols list some time ago. Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> --- git-snapshot-20060904/pre-process.c~1HUCL 2006-09-03 23:32:31.000000000 +0400 +++ git-snapshot-20060904/pre-process.c 2006-09-04 17:19:51.000000000 +0400 @@ -1126,22 +1126,17 @@ static int handle_weak_define(struct str static int handle_undef(struct stream *stream, struct token **line, struct token *token) { struct token *left = token->next; - struct symbol **sym; + struct symbol *sym; if (token_type(left) != TOKEN_IDENT) { sparse_error(token->pos, "expected identifier to 'undef'"); return 1; } - sym = &left->ident->symbols; - while (*sym) { - struct symbol *t = *sym; - if (t->namespace & (NS_MACRO | NS_INVISIBLEMACRO)) { - t->namespace = NS_INVISIBLEMACRO; - return 1; - } - sym = &t->next_id; - } + sym = lookup_macro(left->ident); + if (sym) + sym->namespace = NS_INVISIBLEMACRO; + return 1; } -- VGER BF report: H 0.0167159 - To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html