diff options
Diffstat (limited to 'ext/standard/basic_functions.c')
-rw-r--r-- | ext/standard/basic_functions.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 83512161d5..3cc78df76f 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -2282,14 +2282,21 @@ static int user_tick_function_compare(user_tick_function_entry * tick_fe1, user_ } } -void php_call_shutdown_functions(void) +void php_call_shutdown_functions(TSRMLS_D) { - TSRMLS_FETCH(); - if (BG(user_shutdown_function_names)) zend_try { zend_hash_apply(BG(user_shutdown_function_names), (apply_func_t) user_shutdown_function_call TSRMLS_CC); memcpy(&EG(bailout), &orig_bailout, sizeof(jmp_buf)); + php_free_shutdown_functions(TSRMLS_C); + } + zend_end_try(); +} + +void php_free_shutdown_functions(TSRMLS_D) +{ + if (BG(user_shutdown_function_names)) + zend_try { zend_hash_destroy(BG(user_shutdown_function_names)); FREE_HASHTABLE(BG(user_shutdown_function_names)); BG(user_shutdown_function_names) = NULL; |