From f3c60295ed61370e86dc54028d1d04c807a0f078 Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Sat, 6 Jan 2007 20:30:23 +0000 Subject: [PATCH] MFB --- ext/zip/php_zip.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index caa97ad453..e49b611874 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -531,7 +531,9 @@ 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); + if (zip_close(zip_int->za) != 0) { + _zip_free(zip_int->za); + } zip_int->za = NULL; } @@ -904,17 +906,21 @@ static ZIPARCHIVE_METHOD(open) if (ze_obj->za) { /* we already have an opened zip, free it */ - zip_close(ze_obj->za); + if (zip_close(ze_obj->za) != 0) { + _zip_free(ze_obj->za); + } + ze_obj->za = NULL; } if (ze_obj->filename) { efree(ze_obj->filename); + ze_obj->filename = NULL; } intern = zip_open(resolved_path, flags, &err); if (!intern || err) { RETURN_LONG((long)err); } - ze_obj->filename = estrndup(resolved_path, strlen(resolved_path)); + ze_obj->filename = estrdup(resolved_path); ze_obj->filename_len = filename_len; ze_obj->za = intern; RETURN_TRUE; -- 2.50.1