]> granicus.if.org Git - php/commitdiff
MFB
authorNuno Lopes <nlopess@php.net>
Sat, 6 Jan 2007 20:30:23 +0000 (20:30 +0000)
committerNuno Lopes <nlopess@php.net>
Sat, 6 Jan 2007 20:30:23 +0000 (20:30 +0000)
ext/zip/php_zip.c

index caa97ad453f21d00ff587af051b0805dc0ebb7f2..e49b6118744133a777b8789ce5aed87c3311ed42 100644 (file)
@@ -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;