--- ray/src/common/calfunc.c 2019/07/24 21:20:28 2.24 +++ ray/src/common/calfunc.c 2022/04/08 23:32:25 2.28 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: calfunc.c,v 2.24 2019/07/24 21:20:28 greg Exp $"; +static const char RCSid[] = "$Id: calfunc.c,v 2.28 2022/04/08 23:32:25 greg Exp $"; #endif /* * calfunc.c - routines for calcomp using functions. @@ -150,6 +150,8 @@ funset( /* set a library function */ if (cp == fname) return; } if ((lp = liblookup(fname)) == NULL) { /* insert */ + if (fptr == NULL) + return; /* nothing! */ if (libsize >= MAXLIB) { eputs("Too many library functons!\n"); quit(1); @@ -356,7 +358,7 @@ libfunc( /* execute library function */ errno = ERANGE; } #endif - if (errno == EDOM || errno == ERANGE) { + if ((errno == EDOM) | (errno == ERANGE)) { wputs(fname); if (errno == EDOM) wputs(": domain error\n"); @@ -394,7 +396,7 @@ l_select(char *nm) /* return argument #(A1+1) */ double a1 = argument(1); int n = (int)(a1 + .5); - if (a1 < -.5 || n >= narg) { + if ((a1 < -.5) | (n >= narg)) { errno = EDOM; return(0.0); } @@ -408,11 +410,10 @@ static double l_max(char *nm) /* general maximum function */ { int n = nargum(); - int i = 1; double vmax = argument(1); - while (i++ < n) { - double v = argument(i); + while (n > 1) { + double v = argument(n--); if (vmax < v) vmax = v; } @@ -424,11 +425,10 @@ static double l_min(char *nm) /* general minimum function */ { int n = nargum(); - int i = 1; double vmin = argument(1); - while (i++ < n) { - double v = argument(i); + while (n > 1) { + double v = argument(n--); if (vmin > v) vmin = v; }