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

Comparing ray/src/rt/raypcalls.c (file contents):
Revision 2.11 by greg, Tue Apr 19 01:15:06 2005 UTC vs.
Revision 2.12 by greg, Sat Dec 17 22:17:51 2005 UTC

# Line 402 | Line 402 | ray_pchild(    /* process rays (never returns) */
402                                          /* read each ray request set */
403          while ((n = read(fd_in, (char *)r_queue, sizeof(r_queue))) > 0) {
404                  int     n2;
405 <                if (n % sizeof(RAY))
405 >                if (n < sizeof(RAY))
406                          break;
407                n /= sizeof(RAY);
407                                          /* get smuggled set length */
408 <                n2 = r_queue[0].crtype - n;
408 >                n2 = sizeof(RAY)*r_queue[0].crtype - n;
409                  if (n2 < 0)
410                          error(INTERNAL, "buffer over-read in ray_pchild");
411                  if (n2 > 0) {           /* read the rest of the set */
412 <                        i = readbuf(fd_in, (char *)(r_queue+n),
413 <                                        sizeof(RAY)*n2);
415 <                        if (i != sizeof(RAY)*n2)
412 >                        i = readbuf(fd_in, (char *)r_queue + n, n2);
413 >                        if (i != n2)
414                                  break;
415                          n += n2;
416                  }
417 +                n /= sizeof(RAY);
418                                          /* evaluate rays */
419                  for (i = 0; i < n; i++) {
420                          r_queue[i].crtype = r_queue[i].rtype;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines