aboutsummaryrefslogtreecommitdiffstats
path: root/interpret.h
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-09-25 12:58:05 +0200
committerArnold D. Robbins <arnold@skeeve.com>2012-09-25 12:58:05 +0200
commitb9a82851866f84ca306a2802b4ca50089a2fe683 (patch)
tree1f9928af8fc5f46589275992e6c6e7295e7a5924 /interpret.h
parenteb2698f49247c94c84e1e2c2304ba94d96c89bc9 (diff)
downloadegawk-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.h8
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;