]> granicus.if.org Git - php/commitdiff
Fix previous update - move extension startup further down the startup sequence
authorZeev Suraski <zeev@php.net>
Mon, 25 Sep 2000 18:10:45 +0000 (18:10 +0000)
committerZeev Suraski <zeev@php.net>
Mon, 25 Sep 2000 18:10:45 +0000 (18:10 +0000)
Zend/zend.c
Zend/zend_extensions.c
Zend/zend_extensions.h

index ef08a88271510a77b2133e43c8f339cd70769114..710cf2b2f452337c8b3e21e1eacf25322b896644 100644 (file)
@@ -335,7 +335,9 @@ int zend_startup(zend_utility_functions *utility_functions, char **extensions, i
                fpsetmask(mask & ~FP_X_IMP);
        } 
 #endif
-               
+
+       zend_startup_extensions_mechanism();
+
        /* Set up utility functions and values */
        zend_error_cb = utility_functions->error_function;
        zend_printf = utility_functions->printf_function;
index ac44b533f3a536fabe9b56f69286082c7073a1a1..1b88efdbecb75135571615fde1aba23414629242 100644 (file)
@@ -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);
        }
index 0e87cd19d63b278d673b40140929ee5df4d27468..ddc1ab330d0b69070fb577fd402205c28ee249ec 100644 (file)
@@ -91,6 +91,7 @@ ZEND_API int zend_load_extension(char *path);
 ZEND_API int zend_load_extensions(char **extension_paths);
 ZEND_API int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle);
 void zend_append_version_info(zend_extension *extension);
+int zend_startup_extensions_mechanism(void);
 int zend_startup_extensions(void);
 void zend_shutdown_extensions(void);