summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/basic_functions.c8
-rw-r--r--ext/standard/basic_functions.h1
-rw-r--r--ext/standard/user_filters.c11
3 files changed, 14 insertions, 6 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index a6c380428e..24c2fe5b89 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -1248,12 +1248,8 @@ PHP_RSHUTDOWN_FUNCTION(basic)
BG(user_tick_functions) = NULL;
}
- if (BG(user_filter_map)) {
- zend_hash_destroy(BG(user_filter_map));
- efree(BG(user_filter_map));
- BG(user_filter_map) = NULL;
- }
-
+ PHP_RSHUTDOWN(user_filters)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+
return SUCCESS;
}
diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h
index 4d60602366..4c8f53f29a 100644
--- a/ext/standard/basic_functions.h
+++ b/ext/standard/basic_functions.h
@@ -114,6 +114,7 @@ PHP_FUNCTION(stream_bucket_prepend);
PHP_FUNCTION(stream_bucket_append);
PHP_FUNCTION(stream_bucket_new);
PHP_MINIT_FUNCTION(user_filters);
+PHP_RSHUTDOWN_FUNCTION(user_filters);
#ifdef PHP_WIN32
typedef unsigned int php_stat_len;
diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c
index c7491eb42e..f8933ead01 100644
--- a/ext/standard/user_filters.c
+++ b/ext/standard/user_filters.c
@@ -100,6 +100,17 @@ PHP_MINIT_FUNCTION(user_filters)
return SUCCESS;
}
+PHP_RSHUTDOWN_FUNCTION(user_filters)
+{
+ if (BG(user_filter_map)) {
+ zend_hash_destroy(BG(user_filter_map));
+ efree(BG(user_filter_map));
+ BG(user_filter_map) = NULL;
+ }
+
+ return SUCCESS;
+}
+
static void userfilter_dtor(php_stream_filter *thisfilter TSRMLS_DC)
{
zval *obj = (zval*)thisfilter->abstract;