From a4d07b8e10db5cd9de0a68641abd2a99424dbe71 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 23 Jul 2002 22:09:35 +0000 Subject: [PATCH] More enumeration fixes. I still hate this code. --- archivers/zip.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/archivers/zip.c b/archivers/zip.c index 5299bdf0..ecabb8e1 100644 --- a/archivers/zip.c +++ b/archivers/zip.c @@ -1258,7 +1258,7 @@ static LinkedStringList *ZIP_enumerateFiles(DirHandle *h, LinkedStringList *retval = NULL, *p = NULL; PHYSFS_uint32 dlen = strlen(dirname); - if (dirname[dlen - 1] == '/') + if ((dlen > 0) && (dirname[dlen - 1] == '/')) dlen--; i = zip_find_start_of_dir(info, dirname, 0); @@ -1275,8 +1275,7 @@ static LinkedStringList *ZIP_enumerateFiles(DirHandle *h, if ( ((omitSymLinks) && (zip_entry_is_symlink(entry))) || (*add_file == '\0') ) /* skip links and the dir entry itself. */ { - i++; - continue; + if (++i >= max) break; else continue; } /* if */ slash = strchr(add_file, '/'); /* handle subdirs under dirname... */ @@ -1297,8 +1296,7 @@ static LinkedStringList *ZIP_enumerateFiles(DirHandle *h, { if (info->entries[i].name[dlen] == '/') { - i++; /* skip it. */ - continue; + if (++i >= max) break; else continue; } /* if */ } /* if */ slash = NULL;