commit 66915c0956d505bf60140ff48021c0725edfa02c Author: Roberto E. Vargas Caballero <k...@shike2.com> AuthorDate: Thu Aug 13 09:43:58 2015 +0200 Commit: Roberto E. Vargas Caballero <k...@shike2.com> CommitDate: Thu Aug 13 09:43:58 2015 +0200
Fix install() Install() failed when we wanted install a symbol in a different namespace where it was looked, and it was not declared. diff --git a/cc1/symbol.c b/cc1/symbol.c index 19ef002..e67784d 100644 --- a/cc1/symbol.c +++ b/cc1/symbol.c @@ -247,13 +247,18 @@ Symbol * install(unsigned ns, Symbol *sym) { if (sym->ctx == curctx) { - if (sym->flags & ISDECLARED) - return NULL; - sym->flags |= ISDECLARED; - } else { - sym = linkhash(newsym(ns), sym->name); + if (sym->flags & ISDECLARED) { + if (ns == sym->ns) + return NULL; + } else { + sym->flags |= ISDECLARED; + sym->ns = ns; + goto assign_id; + } } + sym = linkhash(newsym(ns), sym->name); +assign_id: if (sym->ns != NS_CPP) sym->id = (curctx) ? ++localcnt : ++globalcnt;