From 63c5e49a32fb7bdb98c0d34f2d75ee2621ee4c68 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Mon, 24 Jan 2022 00:40:00 +0000 Subject: Fix symbol lookup --- symbol.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'symbol.c') diff --git a/symbol.c b/symbol.c index e67f043..e10ee7a 100644 --- a/symbol.c +++ b/symbol.c @@ -11,10 +11,11 @@ Symtab *newsymtab(void); void freesymtab(Symtab *); Symbol * -getsym(Rune *name) +getsym(Rune *name, int fresh) { DfnFrame *dfn = currentdfn; Symtab *tab; + int done = 0; do{ if(dfn != nil) tab = dfn->symtab; @@ -26,7 +27,9 @@ getsym(Rune *name) return tab->syms[i]; if(dfn) dfn = dfn->prev; - }while(dfn != nil); + else + done = 1; + }while(!done && !fresh); tab->nsyms++; tab->syms = realloc(tab->syms, sizeof(Symbol *) * tab->nsyms); -- cgit v1.2.3