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

Comparing ray/src/common/readmesh.c (file contents):
Revision 2.16 by greg, Tue Nov 27 06:30:05 2018 UTC vs.
Revision 2.19 by greg, Tue Feb 7 20:28:16 2023 UTC

# Line 35 | Line 35 | static long
35   mgetint(siz)                            /* get a siz-byte integer */
36   int  siz;
37   {
38 <        long  r;
38 >        long  r = getint(siz, meshfp);
39  
40 <        r = getint(siz, meshfp);
41 <        if (feof(meshfp))
40 >        if (r == EOF && feof(meshfp))
41                  mesherror(USER, "truncated mesh file");
42 +
43          return(r);
44   }
45  
# Line 47 | Line 47 | int  siz;
47   static double
48   mgetflt()                               /* get a floating point number */
49   {
50 <        double  r;
50 >        double  r = getflt(meshfp);
51  
52 <        r = getflt(meshfp);
53 <        if (feof(meshfp))
52 >        if (r == (double)EOF && feof(meshfp))
53                  mesherror(USER, "truncated mesh file");
54 +
55          return(r);
56   }
57          
# Line 250 | Line 250 | int    flags;
250                  error(SYSTEM, errmsg);
251          }
252          SET_FILE_BINARY(meshfp);
253 + #ifdef getc_unlocked                    /* avoid stupid semaphores */
254 +        flockfile(meshfp);
255 + #endif
256                                          /* read header */
257          checkheader(meshfp, MESHFMT, flags&IO_INFO ? stdout : (FILE *)NULL);
258                                          /* read format number */
# Line 290 | Line 293 | int    flags;
293                          getpatch(&mp->patch[i]);
294          }
295                                          /* clean up */
296 <        fclose(meshfp);
296 >        if (meshfp != stdin)
297 >                fclose(meshfp);
298 > #ifdef getc_unlocked
299 >        else
300 >                funlockfile(meshfp);
301 > #endif
302          mp->ldflags |= flags;
303                                          /* verify data */
304          if ((err = checkmesh(mp)) != NULL)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines