1
0
Эх сурвалжийг харах

PHYSFS_freeList(NULL) is now a safe no-op.

Ryan C. Gordon 17 жил өмнө
parent
commit
fb5e8d9cd2
2 өөрчлөгдсөн 10 нэмэгдсэн , 3 устгасан
  1. 6 3
      src/physfs.c
  2. 4 0
      src/physfs.h

+ 6 - 3
src/physfs.c

@@ -872,10 +872,13 @@ const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void)
 void PHYSFS_freeList(void *list)
 {
     void **i;
-    for (i = (void **) list; *i != NULL; i++)
-        allocator.Free(*i);
+    if (list != NULL)
+    {
+        for (i = (void **) list; *i != NULL; i++)
+            allocator.Free(*i);
 
-    allocator.Free(list);
+        allocator.Free(list);
+    } /* if */
 } /* PHYSFS_freeList */
 
 

+ 4 - 0
src/physfs.h

@@ -550,7 +550,11 @@ __EXPORT__ const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void);
  * Certain PhysicsFS functions return lists of information that are
  *  dynamically allocated. Use this function to free those resources.
  *
+ * It is safe to pass a NULL here, but doing so will cause a crash in versions
+ *  before PhysicsFS 2.1.0.
+ *
  *   \param listVar List of information specified as freeable by this function.
+ *                  Passing NULL is safe; it is a valid no-op.
  *
  * \sa PHYSFS_getCdRomDirs
  * \sa PHYSFS_enumerateFiles