fix leaks within zip entries in several tests

This commit is contained in:
Nuno Lopes 2006-11-11 23:43:00 +00:00
parent b3de830b61
commit 232bb79bed
2 changed files with 17 additions and 8 deletions

View file

@ -52,13 +52,15 @@ zip_fclose(struct zip_file *zf)
free(zf->buffer);
free(zf->zstr);
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->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;
}
}
}
}
ret = 0;
if (zf->error.zip_err)

View file

@ -551,6 +551,7 @@ static void php_zip_free_dir(zend_rsrc_list_entry *rsrc TSRMLS_DC)
if (zip_int) {
if (zip_int->za) {
zip_close(zip_int->za);
zip_int->za = NULL;
}
efree(rsrc->ptr);
@ -565,8 +566,14 @@ static void php_zip_free_entry(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
zip_read_rsrc *zr_rsrc = (zip_read_rsrc *) rsrc->ptr;
efree(zr_rsrc);
rsrc->ptr = NULL;
if (zr_rsrc) {
if (zr_rsrc->zf) {
zip_fclose(zr_rsrc->zf);
zr_rsrc->zf = NULL;
}
efree(zr_rsrc);
rsrc->ptr = NULL;
}
}
/* }}} */