@@ -153,6 +153,9 @@ static void destroy_phar_data(void *pDest) /* {{{ */
153
153
phar_archive_data * phar_data = * (phar_archive_data * * ) pDest ;
154
154
TSRMLS_FETCH ();
155
155
156
+ if (PHAR_GLOBALS -> request_ends ) {
157
+ return destroy_phar_data_only (pDest );
158
+ }
156
159
zend_hash_apply_with_argument (& (PHAR_GLOBALS -> phar_alias_map ), phar_unalias_apply , phar_data TSRMLS_CC );
157
160
if (-- phar_data -> refcount < 0 ) {
158
161
phar_destroy_phar_data (phar_data TSRMLS_CC );
@@ -3126,6 +3129,7 @@ PHP_MSHUTDOWN_FUNCTION(phar) /* {{{ */
3126
3129
PHP_RINIT_FUNCTION (phar ) /* {{{ */
3127
3130
{
3128
3131
PHAR_GLOBALS -> request_done = 0 ;
3132
+ PHAR_GLOBALS -> request_ends = 0 ;
3129
3133
zend_hash_init (& (PHAR_GLOBALS -> phar_fname_map ), sizeof (phar_archive_data * ), zend_get_hash_value , destroy_phar_data , 0 );
3130
3134
zend_hash_init (& (PHAR_GLOBALS -> phar_alias_map ), sizeof (phar_archive_data * ), zend_get_hash_value , NULL , 0 );
3131
3135
return SUCCESS ;
@@ -3134,8 +3138,8 @@ PHP_RINIT_FUNCTION(phar) /* {{{ */
3134
3138
3135
3139
PHP_RSHUTDOWN_FUNCTION (phar ) /* {{{ */
3136
3140
{
3141
+ PHAR_GLOBALS -> request_ends = 1 ;
3137
3142
zend_hash_destroy (& (PHAR_GLOBALS -> phar_alias_map ));
3138
- PHAR_GLOBALS -> phar_fname_map . pDestructor = destroy_phar_data_only ;
3139
3143
zend_hash_destroy (& (PHAR_GLOBALS -> phar_fname_map ));
3140
3144
PHAR_GLOBALS -> request_done = 1 ;
3141
3145
return SUCCESS ;
0 commit comments