summaryrefslogtreecommitdiff
path: root/sys/src/libaml
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-09-07 16:14:08 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-09-07 16:14:08 +0200
commitad1edf75418797d444e419cb21af710e9546b6f2 (patch)
tree722106bb15d32ee809cd7ed3d2a9cf40419fd9ed /sys/src/libaml
parent1b32bd5f0f96a9ac3e4de470388f66c1957d8f14 (diff)
libaml: fix uninitialized variable in getle(), make amleval() work with buildin methods
Diffstat (limited to 'sys/src/libaml')
-rw-r--r--sys/src/libaml/aml.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/src/libaml/aml.c b/sys/src/libaml/aml.c
index 9d1298eb7..e90e711f7 100644
--- a/sys/src/libaml/aml.c
+++ b/sys/src/libaml/aml.c
@@ -460,6 +460,7 @@ getle(uchar *p, int len)
uvlong v;
int i;
+ v = 0ULL;
for(i=0; i<len; i++)
v |= ((uvlong)p[i]) << i*8;
return v;
@@ -1504,7 +1505,7 @@ evalcall(void)
FP->env = e;
FP->narg = 0;
FP->dot = m->name;
- if(m->eval){
+ if(m->eval != nil){
FP->op = nil;
FP->end = PC;
return (*m->eval)();
@@ -2187,7 +2188,15 @@ amleval(void *dot, char *fmt, ...)
m = dot;
if(i != m->narg)
return -1;
- return xec(m->start, m->end, forkname(m->name), e, r);
+ if(m->eval == nil)
+ return xec(m->start, m->end, forkname(m->name), e, r);
+ FP = FB;
+ FP->op = nil;
+ FP->env = e;
+ FP->narg = 0;
+ FP->dot = m->name;
+ FP->ref = FP->aux = nil;
+ dot = (*m->eval)();
}
if(r != nil)
*r = dot;