summaryrefslogtreecommitdiff
path: root/symbol.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-24 00:40:00 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-24 00:40:00 +0000
commit63c5e49a32fb7bdb98c0d34f2d75ee2621ee4c68 (patch)
treec1fa0a6730b070d2e2bc454f6f665ab50e5f6b09 /symbol.c
parent464110afe0599efa5b876eb398769cdbf2a0c1df (diff)
Fix symbol lookup
Diffstat (limited to 'symbol.c')
-rw-r--r--symbol.c7
1 files changed, 5 insertions, 2 deletions
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);