From 912ca3266d8a6ee2dd9c2033867fc3eafb942180 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 31 Jul 2002 04:18:58 +0000 Subject: [PATCH] Fix for correct cleanup on read error. --- archivers/zip.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/archivers/zip.c b/archivers/zip.c index fbbc2fd5..dd9abd32 100644 --- a/archivers/zip.c +++ b/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);