diff options
| author | Tim Kientzle <kientzle@FreeBSD.org> | 2008-06-15 05:15:53 +0000 |
|---|---|---|
| committer | Tim Kientzle <kientzle@FreeBSD.org> | 2008-06-15 05:15:53 +0000 |
| commit | bfc29cb4d3e38736055c5f428886786c52d35888 (patch) | |
| tree | 391f7114a3035c42371524505b4dccf99e96a971 /lib/libarchive/archive_read_support_format_zip.c | |
| parent | 693f6cf97cef04bf76f98b0f189f329ba7811374 (diff) | |
Notes
Diffstat (limited to 'lib/libarchive/archive_read_support_format_zip.c')
| -rw-r--r-- | lib/libarchive/archive_read_support_format_zip.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/libarchive/archive_read_support_format_zip.c b/lib/libarchive/archive_read_support_format_zip.c index d7cd0740088d..1ea19ab37ce2 100644 --- a/lib/libarchive/archive_read_support_format_zip.c +++ b/lib/libarchive/archive_read_support_format_zip.c @@ -564,8 +564,8 @@ archive_read_format_zip_read_data(struct archive_read *a, */ r = ARCHIVE_FATAL; } else { - /* We know compressed size; just skip it. */ - archive_read_format_zip_read_data_skip(a); + /* We can't decompress this entry, but we will + * be able to skip() it and try the next entry. */ r = ARCHIVE_WARN; } break; @@ -747,6 +747,10 @@ archive_read_format_zip_read_data_skip(struct archive_read *a) zip = (struct zip *)(a->format->data); + /* If we've already read to end of data, we're done. */ + if (zip->end_of_entry_cleanup) + return (ARCHIVE_OK); + /* * If the length is at the end, we have no choice but * to decompress all the data to find the end marker. |
