Преглед изворни кода

Only flush file handles on close if they were opened for writing.

Ryan C. Gordon пре 7 година
родитељ
комит
5cbb460bcd
1 измењених фајлова са 8 додато и 5 уклоњено
  1. 8 5
      src/physfs.c

+ 8 - 5
src/physfs.c

@@ -2760,12 +2760,15 @@ static int closeHandleInOpenList(FileHandle **list, FileHandle *handle)
             PHYSFS_uint8 *tmp = handle->buffer;
 
             /* send our buffer to io... */
-            if (!PHYSFS_flush((PHYSFS_File *) handle))
-                return -1;
+            if (!handle->forReading)
+            {
+                if (!PHYSFS_flush((PHYSFS_File *) handle))
+                    return -1;
 
-            /* ...then have io send it to the disk... */
-            else if (io->flush && !io->flush(io))
-                return -1;
+                /* ...then have io send it to the disk... */
+                else if (io->flush && !io->flush(io))
+                    return -1;
+            } /* if */
 
             /* ...then close the underlying file. */
             io->destroy(io);