]> granicus.if.org Git - php/commitdiff
- Fixed problem with -dextension=foobar.so not having it's MINIT run.
authorfoobar <sniper@php.net>
Mon, 8 Aug 2005 16:49:44 +0000 (16:49 +0000)
committerfoobar <sniper@php.net>
Mon, 8 Aug 2005 16:49:44 +0000 (16:49 +0000)
ext/standard/dl.c
ext/standard/dl.h
main/php_ini.c
sapi/cli/php_cli.c

index 2245f4342cee7609d998b553b9bd31ea63dccf98..4bff2e56551a05df5ba4adbf31b1cf0321acd6c4 100644 (file)
@@ -84,7 +84,7 @@ PHP_FUNCTION(dl)
 #endif
        }
 
-       php_dl(*file, MODULE_TEMPORARY, return_value TSRMLS_CC);
+       php_dl(*file, MODULE_TEMPORARY, return_value, 0 TSRMLS_CC);
        EG(full_tables_cleanup) = 1;
 }
 
@@ -101,7 +101,7 @@ PHP_FUNCTION(dl)
 
 /* {{{ php_dl
  */
-void php_dl(zval *file, int type, zval *return_value TSRMLS_DC)
+void php_dl(zval *file, int type, zval *return_value, int start_now TSRMLS_DC)
 {
        void *handle;
        char *libpath;
@@ -223,12 +223,12 @@ void php_dl(zval *file, int type, zval *return_value TSRMLS_DC)
                RETURN_FALSE;
        }
 
-       if (type == MODULE_TEMPORARY && zend_startup_module_ex(module_entry TSRMLS_CC) == FAILURE) {
+       if ((type == MODULE_TEMPORARY || start_now) && zend_startup_module_ex(module_entry TSRMLS_CC) == FAILURE) {
                DL_UNLOAD(handle);
                RETURN_FALSE;
        }
 
-       if ((type == MODULE_TEMPORARY) && module_entry->request_startup_func) {
+       if ((type == MODULE_TEMPORARY || start_now) && module_entry->request_startup_func) {
                if (module_entry->request_startup_func(type, module_entry->module_number TSRMLS_CC) == FAILURE) {
                        php_error_docref(NULL TSRMLS_CC, error_type, "Unable to initialize module '%s'", module_entry->name);
                        DL_UNLOAD(handle);
@@ -246,7 +246,7 @@ PHP_MINFO_FUNCTION(dl)
 
 #else
 
-void php_dl(zval *file, int type, zval *return_value TSRMLS_DC)
+void php_dl(zval *file, int type, zval *return_value, int start_now TSRMLS_DC)
 {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot dynamically load %s - dynamic modules are not supported", Z_STRVAL_P(file));
        RETURN_FALSE;
index 1728d10338bdb15efb2291b6398f5b3d37148197..607047355b6b00e9cf4afefc0bbd5403e2d0ed53 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef DL_H
 #define DL_H
 
-PHPAPI void php_dl(zval *file,int type, zval *return_value TSRMLS_DC);
+PHPAPI void php_dl(zval *file,int type, zval *return_value, int start_now TSRMLS_DC);
 
 /* dynamic loading functions */
 PHP_FUNCTION(dl);
index 65139e43ceae25fece872edd309a0176c7b9d10c..3745cb4dc06241f7e578531a95df41472de21343 100644 (file)
@@ -242,7 +242,7 @@ static void php_load_function_extension_cb(void *arg TSRMLS_DC)
        zval *extension = (zval *) arg;
        zval zval;
 
-       php_dl(extension, MODULE_PERSISTENT, &zval TSRMLS_CC);
+       php_dl(extension, MODULE_PERSISTENT, &zval, 0 TSRMLS_CC);
 }
 /* }}} */
 
index 6f66ba61f984686545b590cb4ed6b05b9f32e011..1767b9c9403d6969011d831608c1fa73c920cc8a 100644 (file)
@@ -438,7 +438,7 @@ static void define_command_line_ini_entry(char *arg TSRMLS_DC)
        if (!strcasecmp(name, "extension")) { /* load function module */
                zval extension, zval;
                ZVAL_STRING(&extension, value, 0);
-               php_dl(&extension, MODULE_TEMPORARY, &zval TSRMLS_CC);
+               php_dl(&extension, MODULE_PERSISTENT, &zval, 1 TSRMLS_CC);
        } else {
                zend_alter_ini_entry(name, strlen(name)+1, value, strlen(value), PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE);
        }