Skip to content
Permalink
Browse files
Fix for correct cleanup on read error.
  • Loading branch information
icculus committed Jul 31, 2002
1 parent 8793165 commit 912ca3266d8a6ee2dd9c2033867fc3eafb942180
Showing with 12 additions and 10 deletions.
  1. +12 −10 archivers/zip.c
@@ -492,7 +492,7 @@ static PHYSFS_sint64 zip_find_end_of_central_dir(void *in, PHYSFS_sint64 *len)
static int ZIP_isArchive(const char *filename, int forWriting)
{
PHYSFS_uint32 sig;
int retval;
int retval = 0;
void *in;

in = __PHYSFS_platformOpenRead(filename);
@@ -502,16 +502,18 @@ static int ZIP_isArchive(const char *filename, int forWriting)
* The first thing in a zip file might be the signature of the
* first local file record, so it makes for a quick determination.
*/
BAIL_IF_MACRO(!readui32(in, &sig), NULL, 0);
retval = (sig == ZIP_LOCAL_FILE_SIG);
if (!retval)
if (readui32(in, &sig))
{
/*
* No sig...might be a ZIP with data at the start
* (a self-extracting executable, etc), so we'll have to do
* it the hard way...
*/
retval = (zip_find_end_of_central_dir(in, NULL) != -1);
retval = (sig == ZIP_LOCAL_FILE_SIG);
if (!retval)
{
/*
* No sig...might be a ZIP with data at the start
* (a self-extracting executable, etc), so we'll have to do
* it the hard way...
*/
retval = (zip_find_end_of_central_dir(in, NULL) != -1);
} /* if */
} /* if */

__PHYSFS_platformClose(in);

0 comments on commit 912ca32

Please sign in to comment.