ref: ad1edf75418797d444e419cb21af710e9546b6f2
parent: 1b32bd5f0f96a9ac3e4de470388f66c1957d8f14
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sat Sep 7 12:14:08 EDT 2013
libaml: fix uninitialized variable in getle(), make amleval() work with buildin methods
--- a/sys/src/libaml/aml.c
+++ b/sys/src/libaml/aml.c
@@ -460,6 +460,7 @@
uvlong v;
int i;
+ v = 0ULL;
for(i=0; i<len; i++)
v |= ((uvlong)p[i]) << i*8;
return v;
@@ -1504,7 +1505,7 @@
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 @@
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;
--
⑨