summaryrefslogtreecommitdiff
path: root/Zend/zend_extensions.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-09-25 18:10:45 +0000
committerZeev Suraski <zeev@php.net>2000-09-25 18:10:45 +0000
commit309827ec1dcc87886825edc057e816e5cb8eb3c5 (patch)
tree3ed733d7af5c92df2fc6e4881a025f5feb9679ee /Zend/zend_extensions.c
parent59d3eb5f2401997cbfa0d23951964f462eab069e (diff)
downloadphp-git-309827ec1dcc87886825edc057e816e5cb8eb3c5.tar.gz
Fix previous update - move extension startup further down the startup sequence
Diffstat (limited to 'Zend/zend_extensions.c')
-rw-r--r--Zend/zend_extensions.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c
index ac44b533f3..1b88efdbec 100644
--- a/Zend/zend_extensions.c
+++ b/Zend/zend_extensions.c
@@ -114,13 +114,6 @@ int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle)
#if ZEND_EXTENSIONS_SUPPORT
zend_extension extension;
- if (new_extension->startup) {
- if (new_extension->startup(new_extension)!=SUCCESS) {
- DL_UNLOAD(handle);
- return FAILURE;
- }
- }
-
extension = *new_extension;
extension.handle = handle;
@@ -146,14 +139,32 @@ static void zend_extension_shutdown(zend_extension *extension)
}
-int zend_startup_extensions()
+static void zend_extension_startup(zend_extension *extension)
+{
+ if (extension->startup) {
+ if (extension->startup(extension)!=SUCCESS) {
+ DL_UNLOAD(extension->handle);
+ }
+ }
+}
+
+
+int zend_startup_extensions_mechanism()
{
+ /* Startup extensions mechanism */
zend_llist_init(&zend_extensions, sizeof(zend_extension), (void (*)(void *)) zend_extension_dtor, 1);
last_resource_number = 0;
return SUCCESS;
}
+int zend_startup_extensions()
+{
+ zend_llist_apply(&zend_extensions, (void (*)(void *)) zend_extension_startup);
+ return SUCCESS;
+}
+
+
void zend_shutdown_extensions()
{
zend_llist_apply(&zend_extensions, (void (*)(void *)) zend_extension_shutdown);
@@ -163,7 +174,7 @@ void zend_shutdown_extensions()
void zend_extension_dtor(zend_extension *extension)
{
-#if ZEND_EXTENSIONS_SUPPORT
+#if ZEND_EXTENSIONS_SUPPORT && !ZEND_DEBUG
if (extension->handle) {
DL_UNLOAD(extension->handle);
}