ref: 85d794beb04d80e13d555c6bbd3b41bd4af11637
parent: a38b77f3f7ee441a4936f948d6eedd25fc2a1b23
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;
--
⑨