From 0295f8bbdceba5fe9176e25f93e1b182a574b836 Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Wed, 10 Jan 2007 00:38:17 +0000 Subject: [PATCH] - Fix shutdown issue (keep the speed) --- ext/phar/phar.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ext/phar/phar.c b/ext/phar/phar.c index 24b3462474..d7b3376c4b 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -230,6 +230,23 @@ static void phar_destroy_phar_data(phar_archive_data *data TSRMLS_DC) /* {{{ */ } /* }}}*/ +/** + * Destroy phar's in shutdown, here we don't care about aliases + */ +static void destroy_phar_data_only(void *pDest) /* {{{ */ +{ + phar_archive_data *phar_data = *(phar_archive_data **) pDest; + TSRMLS_FETCH(); + + if (--phar_data->refcount < 0) { + phar_destroy_phar_data(phar_data TSRMLS_CC); + } +} +/* }}}*/ + +/** + * Delete aliases to phar's that got kicked out of the global table + */ static int phar_unalias_apply(void *pDest, void *argument TSRMLS_DC) /* {{{ */ { return *(void**)pDest == argument ? ZEND_HASH_APPLY_REMOVE : ZEND_HASH_APPLY_KEEP; @@ -3003,6 +3020,7 @@ PHP_RINIT_FUNCTION(phar) /* {{{ */ PHP_RSHUTDOWN_FUNCTION(phar) /* {{{ */ { zend_hash_destroy(&(PHAR_GLOBALS->phar_alias_map)); + PHAR_GLOBALS->phar_fname_map. pDestructor = destroy_phar_data_only; zend_hash_destroy(&(PHAR_GLOBALS->phar_fname_map)); return SUCCESS; } -- 2.50.1