diff options
author | Dmitry Stogov <dmitry@zend.com> | 2019-12-09 15:05:24 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2019-12-09 15:05:24 +0300 |
commit | 92c23e1fd36b89bcc835fcd3e49e6ff33d1b1ca8 (patch) | |
tree | 256b3738e73d6dc1aaa37b6d474532ee5874864b | |
parent | 42a2fb8411848236d0cd56b5efd05e352e62ee3d (diff) | |
download | php-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.c | 6 | ||||
-rw-r--r-- | ext/gd/gd.c | 1 | ||||
-rw-r--r-- | ext/phar/phar.c | 1 |
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; } /* }}} */ |