summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2019-12-09 15:05:24 +0300
committerDmitry Stogov <dmitry@zend.com>2019-12-09 15:05:24 +0300
commit92c23e1fd36b89bcc835fcd3e49e6ff33d1b1ca8 (patch)
tree256b3738e73d6dc1aaa37b6d474532ee5874864b
parent42a2fb8411848236d0cd56b5efd05e352e62ee3d (diff)
downloadphp-git-92c23e1fd36b89bcc835fcd3e49e6ff33d1b1ca8.tar.gz
Call zend_unregister_ini_entries() when unload extension loaded through dl() without MSHUTDOWN callback.
Extensions with MSHUTDOWN should use UNREGISTER_INI_ENTRIES().
-rw-r--r--Zend/zend_API.c6
-rw-r--r--ext/gd/gd.c1
-rw-r--r--ext/phar/phar.c1
3 files changed, 8 insertions, 0 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 195dd7d3d7..f71e072a66 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -2562,6 +2562,12 @@ void module_destructor(zend_module_entry *module) /* {{{ */
module->module_shutdown_func(module->type, module->module_number);
}
+ if (module->module_started
+ && !module->module_shutdown_func
+ && module->type == MODULE_TEMPORARY) {
+ zend_unregister_ini_entries(module->module_number);
+ }
+
/* Deinitilaise module globals */
if (module->globals_size) {
#ifdef ZTS
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index b6868f53eb..3480699a70 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -1235,6 +1235,7 @@ PHP_MSHUTDOWN_FUNCTION(gd)
#if defined(HAVE_GD_FREETYPE) && defined(HAVE_GD_BUNDLED)
gdFontCacheMutexShutdown();
#endif
+ UNREGISTER_INI_ENTRIES();
return SUCCESS;
}
/* }}} */
diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index 90038d3e27..9b21eb7e2a 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -3428,6 +3428,7 @@ PHP_MSHUTDOWN_FUNCTION(phar) /* {{{ */
zend_hash_destroy(&(cached_alias));
}
+ UNREGISTER_INI_ENTRIES();
return SUCCESS;
}
/* }}} */