diff --git a/src/physfs.c b/src/physfs.c index 4a5dc11..5d2cdf0 100644 --- a/src/physfs.c +++ b/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 */ diff --git a/src/physfs.h b/src/physfs.h index da4f441..5c9fe7e 100644 --- a/src/physfs.h +++ b/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