diff options
Diffstat (limited to 'symbol.c')
-rw-r--r-- | symbol.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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); |