--- ray/src/common/calfunc.c 1991/05/17 08:55:39 1.5 +++ ray/src/common/calfunc.c 1991/07/16 14:26:18 1.8 @@ -172,7 +172,7 @@ double (*fptr)(); break; libsize++; } - lp[0].fname = savestr(fname); + lp[0].fname = fname; /* must be static! */ lp[0].nargs = nargs; lp[0].atyp = assign; lp[0].f = fptr; @@ -200,7 +200,7 @@ argument(n) /* return nth argument for active functi register int n; { register ACTIVATION *actp = curact; - EPNODE *ep; + register EPNODE *ep; double aval; if (actp == NULL || --n < 0) { @@ -380,14 +380,19 @@ register VARDEF *vp; } lasterrno = errno; errno = 0; - d = (*vp->lib->f)(); + d = (*vp->lib->f)(vp->lib->fname); #ifdef IEEE if (!finite(d)) errno = EDOM; #endif if (errno) { wputs(fname); - wputs(": bad call\n"); + if (errno == EDOM) + wputs(": domain error\n"); + else if (errno == ERANGE) + wputs(": range error\n"); + else + wputs(": error in call\n"); return(0.0); } errno = lasterrno;