summaryrefslogtreecommitdiff
path: root/ext/standard/basic_functions.c
diff options
context:
space:
mode:
authorfoobar <sniper@php.net>2005-01-09 16:30:09 +0000
committerfoobar <sniper@php.net>2005-01-09 16:30:09 +0000
commit6ffb0dcaf2f3dc1194522afe0c5af226bd757e31 (patch)
tree729e447880fa3e2e088e9bef8cb7aa54224f6637 /ext/standard/basic_functions.c
parent2da8b014affc2cf3c1ca2678cf42d58c1d3895f3 (diff)
downloadphp-git-6ffb0dcaf2f3dc1194522afe0c5af226bd757e31.tar.gz
- Fix leaks with registered shutdown functions.
Diffstat (limited to 'ext/standard/basic_functions.c')
-rw-r--r--ext/standard/basic_functions.c13
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;