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

Comparing ray/src/rt/ambient.c (file contents):
Revision 2.103 by greg, Tue Nov 1 20:39:39 2016 UTC vs.
Revision 2.104 by greg, Fri Jan 27 22:00:49 2017 UTC

# Line 1327 | Line 1327 | ambsync(void)                  /* synchronize ambient file */
1327          if ((flen = lseek(fileno(ambfp), (off_t)0, SEEK_END)) < 0)
1328                  goto seekerr;
1329          if ((n = flen - lastpos) > 0) {         /* file has grown */
1330 <                if (ambinp == NULL) {           /* use duplicate filedes */
1331 <                        ambinp = fdopen(dup(fileno(ambfp)), "r");
1330 >                if (ambinp == NULL) {           /* get new file pointer */
1331 >                        ambinp = fopen(ambfile, "rb");
1332                          if (ambinp == NULL)
1333 <                                error(SYSTEM, "fdopen failed in ambsync");
1333 >                                error(SYSTEM, "fopen failed in ambsync");
1334                  }
1335                  if (fseek(ambinp, lastpos, SEEK_SET) < 0)
1336                          goto seekerr;
# Line 1345 | Line 1345 | ambsync(void)                  /* synchronize ambient file */
1345                          avstore(&avs);
1346                          n -= AMBVALSIZ;
1347                  }
1348 <                lastpos = flen - n;
1349 <                /*** seek always as safety measure
1350 <                if (n) ***/                     /* alignment */
1351 <                        if (lseek(fileno(ambfp), (off_t)lastpos, SEEK_SET) < 0)
1352 <                                goto seekerr;
1348 >                lastpos = flen - n;             /* check alignment */
1349 >                if (n && lseek(fileno(ambfp), (off_t)lastpos, SEEK_SET) < 0)
1350 >                        goto seekerr;
1351          }
1352          n = fflush(ambfp);                      /* calls write() at last */
1353 <        if (n != EOF)
1356 <                lastpos += (long)nunflshed*AMBVALSIZ;
1357 <        else if ((lastpos = lseek(fileno(ambfp), (off_t)0, SEEK_CUR)) < 0)
1358 <                goto seekerr;
1359 <                
1353 >        lastpos += (long)nunflshed*AMBVALSIZ;
1354          aflock(F_UNLCK);                        /* release file */
1355          nunflshed = 0;
1356          return(n);
1357   seekerr:
1358          error(SYSTEM, "seek failed in ambsync");
1359 <        return -1; /* pro forma return */
1359 >        return(EOF);    /* pro forma return */
1360   }
1361  
1362   #else   /* ! F_SETLKW */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines