]> granicus.if.org Git - php/commitdiff
*** empty log message ***
authorZeev Suraski <zeev@php.net>
Wed, 29 Mar 2000 19:26:34 +0000 (19:26 +0000)
committerZeev Suraski <zeev@php.net>
Wed, 29 Mar 2000 19:26:34 +0000 (19:26 +0000)
Zend/zend_extensions.c
Zend/zend_extensions.h

index 51264b3c8e1096d74b6fa4db9b74f49a3f94044b..50b3dd47e5e923e7dbb376a698e21a98d49c96c3 100644 (file)
@@ -44,7 +44,7 @@ int zend_load_extension(char *path)
 {
 #if ZEND_EXTENSIONS_SUPPORT
        DL_HANDLE handle;
-       zend_extension extension, *new_extension;
+       zend_extension *new_extension;
        zend_extension_version_info *extension_version_info;
 
        handle = DL_LOAD(path);
@@ -106,21 +106,30 @@ int zend_load_extension(char *path)
                        return FAILURE;
                }
        }
+       return zend_register_extension(new_extension, handle);
+#else
+       fprintf(stderr, "Extensions are not supported on this platform.\n");
+       return FAILURE;
+#endif
+}
+
+
+int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle)
+{
+       zend_extension extension;
+
        extension = *new_extension;
        extension.handle = handle;
 
        zend_llist_add_element(&zend_extensions, &extension);
 
+       zend_append_version_info(&extension);
        /*fprintf(stderr, "Loaded %s, version %s\n", extension.name, extension.version);*/
 
-       zend_append_version_info(&extension);
        return SUCCESS;
-#else
-       fprintf(stderr, "Extensions are not supported on this platform.\n");
-       return FAILURE;
-#endif
 }
 
+
 static void zend_extension_shutdown(zend_extension *extension)
 {
 #if ZEND_EXTENSIONS_SUPPORT
@@ -141,7 +150,9 @@ void zend_shutdown_extensions()
 void zend_extension_dtor(zend_extension *extension)
 {
 #if ZEND_EXTENSIONS_SUPPORT
-       DL_UNLOAD(extension->handle);
+       if (extension->handle) {
+               DL_UNLOAD(extension->handle);
+       }
 #endif
 }
 
index 13ef58d933b2db2d599d5f093dec77bf14dacf87..24abb5be03936ac3bc5b51fe79f0ff5c0492ca0e 100644 (file)
@@ -88,8 +88,9 @@ ZEND_API int zend_get_resource_handle(zend_extension *extension);
 ZEND_API extern zend_llist zend_extensions;
 
 void zend_extension_dtor(zend_extension *extension);
-int zend_load_extension(char *path);
-int zend_load_extensions(char **extension_paths);
+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);
 void zend_shutdown_extensions(void);