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

Comparing ray/src/rt/source.c (file contents):
Revision 1.47 by greg, Tue Oct 22 15:45:13 1991 UTC vs.
Revision 2.3 by greg, Sun Apr 12 10:05:32 1992 UTC

# Line 41 | Line 41 | static int  maxcntr = 0;               /* size of contribution arra
41  
42   marksources()                   /* find and mark source objects */
43   {
44 +        int  foundsource = 0;
45          int  i;
46          register OBJREC  *o, *m;
47          register int  ns;
# Line 93 | Line 94 | marksources()                  /* find and mark source objects */
94                                  source[ns].sflags |= SSKIP;
95                          }
96                  }
97 +                if (!(source[ns].sflags & SSKIP))
98 +                        foundsource++;
99          }
100 <        if (nsources <= 0) {
100 >        if (!foundsource) {
101                  error(WARNING, "no light sources found");
102                  return;
103          }
104          markvirtuals();                 /* find and add virtual sources */
105                                  /* allocate our contribution arrays */
106 <        maxcntr = nsources + MAXSPART*2;        /* start with this many */
106 >        maxcntr = nsources + MAXSPART;  /* start with this many */
107          srccnt = (CONTRIB *)malloc(maxcntr*sizeof(CONTRIB));
108          cntord = (CNTPTR *)malloc(maxcntr*sizeof(CNTPTR));
109 <        if (srccnt == NULL || cntord == NULL)
109 >        if (srccnt == NULL | cntord == NULL)
110                  goto memerr;
111          return;
112   memerr:
# Line 228 | Line 231 | char  *p;                      /* data for f */
231                                          maxcntr*sizeof(CONTRIB));
232                          cntord = (CNTPTR *)realloc((char *)cntord,
233                                          maxcntr*sizeof(CNTPTR));
234 <                        if (srccnt == NULL || cntord == NULL)
234 >                        if (srccnt == NULL | cntord == NULL)
235                                  error(SYSTEM, "out of memory in direct");
236                  }
237                  cntord[sn].sndx = sn;
# Line 261 | Line 264 | char  *p;                      /* data for f */
264                          l = m;
265                  }
266          }
267 +        if (ncnts == 0)
268 +                return;         /* no contributions! */
269                                                  /* accumulate tail */
270          for (sn = ncnts-1; sn > 0; sn--)
271                  cntord[sn-1].brt += cntord[sn].brt;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines