diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2012-09-25 12:58:05 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2012-09-25 12:58:05 +0200 |
commit | b9a82851866f84ca306a2802b4ca50089a2fe683 (patch) | |
tree | 1f9928af8fc5f46589275992e6c6e7295e7a5924 /interpret.h | |
parent | eb2698f49247c94c84e1e2c2304ba94d96c89bc9 (diff) | |
download | egawk-b9a82851866f84ca306a2802b4ca50089a2fe683.tar.gz egawk-b9a82851866f84ca306a2802b4ca50089a2fe683.tar.bz2 egawk-b9a82851866f84ca306a2802b4ca50089a2fe683.zip |
First cut at SYMTAB and FUNCTAB.
Diffstat (limited to 'interpret.h')
-rw-r--r-- | interpret.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/interpret.h b/interpret.h index c7380bd4..208155a7 100644 --- a/interpret.h +++ b/interpret.h @@ -212,6 +212,10 @@ top: r = *assoc_lookup(t1, t2); DEREF(t2); + + if (t1 == symbol_table && r->type == Node_var) + r = r->var_value; + if (r->type == Node_val) UPREF(r); PUSH(r); @@ -531,6 +535,10 @@ mod: array_vname(t1), (int) t2->stlen, t2->stptr); } DEREF(t2); + + if (t1 == symbol_table && (*lhs)->type == Node_var) + lhs = & ((*lhs)->var_value); + unref(*lhs); *lhs = POP_SCALAR(); break; |