ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/calfunc.c
(Generate patch)

Comparing ray/src/common/calfunc.c (file contents):
Revision 1.5 by greg, Fri May 17 08:55:39 1991 UTC vs.
Revision 2.1 by greg, Tue Nov 12 16:55:16 1991 UTC

# Line 172 | Line 172 | double  (*fptr)();
172                  break;
173          libsize++;
174      }
175 <    lp[0].fname = savestr(fname);
175 >    lp[0].fname = fname;                /* must be static! */
176      lp[0].nargs = nargs;
177      lp[0].atyp = assign;
178      lp[0].f = fptr;
# Line 200 | Line 200 | argument(n)                    /* return nth argument for active functi
200   register int  n;
201   {
202      register ACTIVATION  *actp = curact;
203 <    EPNODE  *ep;
203 >    register EPNODE  *ep;
204      double  aval;
205  
206      if (actp == NULL || --n < 0) {
# Line 380 | Line 380 | register VARDEF  *vp;
380      }
381      lasterrno = errno;
382      errno = 0;
383 <    d = (*vp->lib->f)();
383 >    d = (*vp->lib->f)(vp->lib->fname);
384   #ifdef  IEEE
385 <    if (!finite(d))
386 <        errno = EDOM;
385 >    if (errno == 0)
386 >        if (isnan(d))
387 >            errno = EDOM;
388 >        else if (isinf(d))
389 >            errno = ERANGE;
390   #endif
391      if (errno) {
392          wputs(fname);
393 <        wputs(": bad call\n");
393 >        if (errno == EDOM)
394 >                wputs(": domain error\n");
395 >        else if (errno == ERANGE)
396 >                wputs(": range error\n");
397 >        else
398 >                wputs(": error in call\n");
399          return(0.0);
400      }
401      errno = lasterrno;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines