git: 9front

Download patch

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;
--