summaryrefslogtreecommitdiff
path: root/Zend/zend_extensions.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-04-18 15:11:52 +0000
committerZeev Suraski <zeev@php.net>1999-04-18 15:11:52 +0000
commit342c6e0b2328db952709dd5a35c113e2b17c1e3d (patch)
treea43236d5e2474a8f55a6e5cb9ebd262da5374770 /Zend/zend_extensions.c
parent2e8fb4e329bf98eb33dffad4c5fb1b49f73e7517 (diff)
downloadphp-git-342c6e0b2328db952709dd5a35c113e2b17c1e3d.tar.gz
Whatnot:
* updated alloc_persist to use critical sections * changed extension shutdown to two-phase * updated dependencies * PR support (don't remember if there was any really)
Diffstat (limited to 'Zend/zend_extensions.c')
-rw-r--r--Zend/zend_extensions.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c
index fe63768dba..ce49505f12 100644
--- a/Zend/zend_extensions.c
+++ b/Zend/zend_extensions.c
@@ -100,13 +100,26 @@ int zend_load_extension(char *path)
#endif
}
-
-void zend_extension_dtor(zend_extension *extension)
+static void zend_extension_shutdown(zend_extension *extension)
{
#if ZEND_EXTENSIONS_SUPPORT
if (extension->shutdown) {
extension->shutdown(extension);
}
+#endif
+}
+
+
+void zend_shutdown_extensions()
+{
+ zend_llist_apply(&zend_extensions, (void (*)(void *)) zend_extension_shutdown);
+ zend_llist_destroy(&zend_extensions);
+}
+
+
+void zend_extension_dtor(zend_extension *extension)
+{
+#if ZEND_EXTENSIONS_SUPPORT
DL_UNLOAD(extension->handle);
#endif
}