summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authormongo <andmarti@gmail.com>2017-07-28 14:52:51 -0300
committermongo <andmarti@gmail.com>2017-07-28 14:52:51 -0300
commita7a5c82c2ead2a2d3e376fe88de48c8231b83284 (patch)
treee42408a5a029f0c558c169fc3173c69c4f43d853 /src
parent973e8997d058170d59615248130f7a97ac83e0b8 (diff)
Work on issue # 193
Diffstat (limited to 'src')
-rw-r--r--src/interp.c12
-rw-r--r--src/interp.h4
2 files changed, 8 insertions, 8 deletions
diff --git a/src/interp.c b/src/interp.c
index 58c121f..82810b9 100644
--- a/src/interp.c
+++ b/src/interp.c
@@ -633,7 +633,7 @@ double donval(char * colstr, double rowdoub) {
* The left pointer is a chain of ELIST nodes, the right pointer
* is a value.
*/
-double dolmax(struct enode * ep) {
+double dolmax(struct ent * e, struct enode * ep) {
register int count = 0;
register double maxval = 0; /* Assignment to shut up lint */
register struct enode * p;
@@ -641,7 +641,7 @@ double dolmax(struct enode * ep) {
cellerror = CELLOK;
for (p = ep; p; p = p->e.o.left) {
- v = eval(NULL, p->e.o.right);
+ v = eval(e, p->e.o.right);
if ( !count || v > maxval) {
maxval = v;
count++;
@@ -651,7 +651,7 @@ double dolmax(struct enode * ep) {
else return (double)0;
}
-double dolmin(struct enode * ep) {
+double dolmin(struct ent * e, struct enode * ep) {
register int count = 0;
register double minval = 0; /* Assignment to shut up lint */
register struct enode * p;
@@ -659,7 +659,7 @@ double dolmin(struct enode * ep) {
cellerror = CELLOK;
for (p = ep; p; p = p->e.o.left) {
- v = eval(NULL, p->e.o.right);
+ v = eval(e, p->e.o.right);
if ( !count || v < minval) {
minval = v;
count++;
@@ -960,8 +960,8 @@ double eval(register struct ent * ent, register struct enode * e) {
case ASCII: return (doascii(seval(ent, e->e.o.left)));
case SLEN: return (doslen(seval(ent, e->e.o.left)));
case EQS: return (doeqs(seval(ent, e->e.o.right), seval(ent, e->e.o.left)));
- case LMAX: return dolmax(e);
- case LMIN: return dolmin(e);
+ case LMAX: return dolmax(ent, e);
+ case LMIN: return dolmin(ent, e);
case NVAL: return (donval(seval(ent, e->e.o.left), eval(ent, e->e.o.right)));
case MYROW: return ((double) (gmyrow + rowoffset));
case MYCOL: return ((double) (gmycol + coloffset));
diff --git a/src/interp.h b/src/interp.h
index ced0171..58fb8bd 100644
--- a/src/interp.h
+++ b/src/interp.h
@@ -18,8 +18,8 @@ int doslen(char * s);
double doeqs(char * s1, char * s2);
struct ent * getent(char * colstr, double rowdoub);
double donval(char * colstr, double rowdoub);
-double dolmax(struct enode * ep);
-double dolmin(struct enode * ep);
+double dolmax(struct ent * e, struct enode * ep);
+double dolmin(struct ent * e, struct enode * ep);
//double eval(register struct enode *e);
double eval(register struct ent * ent, register struct enode * e);
double fn1_eval(double (* fn)(), double arg);