Kaynağa Gözat

Fixed __PHYSFS_platformTell() things in stable-1.0 branch.

Ryan C. Gordon 14 yıl önce
ebeveyn
işleme
8ae1b528a0
4 değiştirilmiş dosya ile 6 ekleme ve 7 silme
  1. 1 2
      physfs_internal.h
  2. 2 2
      platform/pocketpc.c
  3. 1 1
      platform/posix.c
  4. 2 2
      platform/win32.c

+ 1 - 2
physfs_internal.h

@@ -1431,8 +1431,7 @@ int __PHYSFS_platformSeek(void *opaque, PHYSFS_uint64 pos);
  *
  * Not all file types can "tell"; this is to be expected by the caller.
  *
- * On error, call __PHYSFS_setError() and return zero. On success, return
- *  a non-zero value.
+ * On error, call __PHYSFS_setError() and return -1. On success, return >= 0.
  */
 PHYSFS_sint64 __PHYSFS_platformTell(void *opaque);
 

+ 2 - 2
platform/pocketpc.c

@@ -553,7 +553,7 @@ PHYSFS_sint64 __PHYSFS_platformTell(void *opaque)
     LowPos = SetFilePointer(FileHandle, 0, &HighPos, FILE_CURRENT);
     if ((LowPos == INVALID_SET_FILE_POINTER) && (GetLastError() != NO_ERROR))
     {
-        BAIL_MACRO(win32strerror(), 0);
+        BAIL_MACRO(win32strerror(), -1);
     } /* if */
     else
     {
@@ -599,7 +599,7 @@ int __PHYSFS_platformEOF(void *opaque)
         return 1;  /* we're definitely at EOF. */
 
     /* Get the current position in the file */
-    if ((FilePosition = __PHYSFS_platformTell(opaque)) != 0)
+    if ((FilePosition = __PHYSFS_platformTell(opaque)) != -1)
     {
         /* Non-zero if EOF is equal to the file length */
         retval = (FilePosition == FileLength);

+ 1 - 1
platform/posix.c

@@ -478,7 +478,7 @@ int __PHYSFS_platformEOF(void *opaque)
 {
     PHYSFS_sint64 pos = __PHYSFS_platformTell(opaque);
     PHYSFS_sint64 len = __PHYSFS_platformFileLength(opaque);
-    return(pos >= len);
+    return((pos < 0) || (len < 0) || (pos >= len));
 } /* __PHYSFS_platformEOF */
 
 

+ 2 - 2
platform/win32.c

@@ -897,7 +897,7 @@ PHYSFS_sint64 __PHYSFS_platformTell(void *opaque)
     if ( (LowPos == PHYSFS_INVALID_SET_FILE_POINTER) &&
          (GetLastError() != NO_ERROR) )
     {
-        BAIL_MACRO(win32strerror(), 0);
+        BAIL_MACRO(win32strerror(), -1);
     } /* if */
     else
     {
@@ -944,7 +944,7 @@ int __PHYSFS_platformEOF(void *opaque)
         return 1;  /* we're definitely at EOF. */
 
     /* Get the current position in the file */
-    if ((FilePosition = __PHYSFS_platformTell(opaque)) != 0)
+    if ((FilePosition = __PHYSFS_platformTell(opaque)) != -1
     {
         /* Non-zero if EOF is equal to the file length */
         retval = (FilePosition == FileLength);