]> granicus.if.org Git - php/commitdiff
free mounted_dirs on error to avoid memleak
authorGreg Beaver <cellog@php.net>
Sat, 23 Feb 2008 21:29:57 +0000 (21:29 +0000)
committerGreg Beaver <cellog@php.net>
Sat, 23 Feb 2008 21:29:57 +0000 (21:29 +0000)
ext/phar/tar.c

index c1ed85017190ee4baff93610ff26a3586f0fad38..10cd0655d852a713d9d887d198c6214ef6dfd472 100644 (file)
@@ -187,6 +187,8 @@ int phar_open_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, i
                        php_stream_close(fp);
                        zend_hash_destroy(&myphar->manifest);
                        myphar->manifest.arBuckets = 0;
+                       zend_hash_destroy(&myphar->mounted_dirs);
+                       myphar->mounted_dirs.arBuckets = 0;
                        efree(myphar);
                        return FAILURE;
                }
@@ -205,6 +207,8 @@ int phar_open_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, i
                        php_stream_close(fp);
                        zend_hash_destroy(&myphar->manifest);
                        myphar->manifest.arBuckets = 0;
+                       zend_hash_destroy(&myphar->mounted_dirs);
+                       myphar->mounted_dirs.arBuckets = 0;
                        efree(myphar);
                        return FAILURE;
                }
@@ -260,6 +264,8 @@ int phar_open_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, i
                                php_stream_close(fp);
                                zend_hash_destroy(&myphar->manifest);
                                myphar->manifest.arBuckets = 0;
+                               zend_hash_destroy(&myphar->mounted_dirs);
+                               myphar->mounted_dirs.arBuckets = 0;
                                efree(myphar);
                                return FAILURE;
                        }
@@ -284,6 +290,8 @@ int phar_open_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, i
                                php_stream_close(fp);
                                zend_hash_destroy(&myphar->manifest);
                                myphar->manifest.arBuckets = 0;
+                               zend_hash_destroy(&myphar->mounted_dirs);
+                               myphar->mounted_dirs.arBuckets = 0;
                                efree(myphar);
                                return FAILURE;
                        }
@@ -309,6 +317,8 @@ int phar_open_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, i
                php_stream_close(fp);
                zend_hash_destroy(&myphar->manifest);
                myphar->manifest.arBuckets = 0;
+               zend_hash_destroy(&myphar->mounted_dirs);
+               myphar->mounted_dirs.arBuckets = 0;
                efree(myphar);
                return FAILURE;
        }