summaryrefslogtreecommitdiff
path: root/ext/zip/lib/zip_fclose.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/zip/lib/zip_fclose.c')
-rw-r--r--ext/zip/lib/zip_fclose.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/ext/zip/lib/zip_fclose.c b/ext/zip/lib/zip_fclose.c
index 8f062d9d09..eb55ddbcea 100644
--- a/ext/zip/lib/zip_fclose.c
+++ b/ext/zip/lib/zip_fclose.c
@@ -44,28 +44,20 @@ zip_fclose(struct zip_file *zf)
{
int i, ret;
- if (zf->zstr)
- inflateEnd(zf->zstr);
- free(zf->buffer);
- free(zf->zstr);
- if (zf->za) {
- for (i=0; i<zf->za->nfile; i++) {
- if (zf->za->file[i] == zf) {
- zf->za->file[i] = zf->za->file[zf->za->nfile-1];
- zf->za->nfile--;
- break;
- }
- }
+ if (zf->src)
+ zip_source_free(zf->src);
+
+ for (i=0; i<zf->za->nfile; i++) {
+ if (zf->za->file[i] == zf) {
+ zf->za->file[i] = zf->za->file[zf->za->nfile-1];
+ zf->za->nfile--;
+ break;
}
+ }
ret = 0;
if (zf->error.zip_err)
ret = zf->error.zip_err;
- else if ((zf->flags & ZIP_ZF_CRC) && (zf->flags & ZIP_ZF_EOF)) {
- /* if EOF, compare CRC */
- if (zf->crc_orig != zf->crc)
- ret = ZIP_ER_CRC;
- }
free(zf);
return ret;