Przeglądaj źródła

Platform deinit should happen last, since other deinit bits might depend on it.

Ryan C. Gordon 9 lat temu
rodzic
commit
ab7eb81a4a
1 zmienionych plików z 4 dodań i 2 usunięć
  1. 4 2
      src/physfs.c

+ 4 - 2
src/physfs.c

@@ -1286,8 +1286,6 @@ static void freeArchivers(void)
 
 static int doDeinit(void)
 {
-    BAIL_IF_MACRO(!__PHYSFS_platformDeinit(), ERRPASS, 0);
-
     closeFileHandleList(&openWriteList);
     BAIL_IF_MACRO(!PHYSFS_setWriteDir(NULL), PHYSFS_ERR_FILES_STILL_OPEN, 0);
 
@@ -1335,6 +1333,10 @@ static int doDeinit(void)
         allocator.Deinit();
 
     errorLock = stateLock = NULL;
+
+    /* !!! FIXME: what on earth are you supposed to do if this fails? */
+    BAIL_IF_MACRO(!__PHYSFS_platformDeinit(), ERRPASS, 0);
+
     return 1;
 } /* doDeinit */