diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-24 00:40:00 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-24 00:40:00 +0000 |
commit | 63c5e49a32fb7bdb98c0d34f2d75ee2621ee4c68 (patch) | |
tree | c1fa0a6730b070d2e2bc454f6f665ab50e5f6b09 /symbol.c | |
parent | 464110afe0599efa5b876eb398769cdbf2a0c1df (diff) |
Fix symbol lookup
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); |