sas Sun Jan 14 19:21:05 2001 EDT
Modified files:
/php4/main php_ini.c php_globals.h
Log:
Defer loading of extensions until all configuration entries have been
added to the configuration hash.
Index: php4/main/php_ini.c
diff -u php4/main/php_ini.c:1.47 php4/main/php_ini.c:1.48
--- php4/main/php_ini.c:1.47 Sat Jan 13 05:10:50 2001
+++ php4/main/php_ini.c Sun Jan 14 19:21:05 2001
@@ -117,7 +117,6 @@
}
}
-
static void php_config_ini_parser_cb(zval *arg1, zval *arg2, int callback_type, void
*arg)
{
switch (callback_type) {
@@ -128,9 +127,13 @@
break;
}
if (!strcasecmp(Z_STRVAL_P(arg1), "extension")) { /*
load function module */
- zval dummy;
-
- php_dl(arg2, MODULE_PERSISTENT, &dummy);
+ zval copy;
+ PLS_FETCH();
+
+ copy = *arg2;
+ zval_copy_ctor(©);
+ copy.refcount = 0;
+
+zend_llist_add_element(&PG(ini_extension_list), ©);
} else if (!strcasecmp(Z_STRVAL_P(arg1),
ZEND_EXTENSION_TOKEN)) { /* load Zend extension */
zend_load_extension(Z_STRVAL_P(arg2));
} else {
@@ -144,6 +147,15 @@
}
}
+static void php_apply_ini_extension_list(void *dummy)
+{
+ zval *extension = (zval *) dummy;
+ zval zval;
+
+ php_dl(extension, MODULE_PERSISTENT, &zval);
+ zval_dtor(extension);
+}
+
int php_init_config(char *php_ini_path_override)
{
@@ -158,6 +170,8 @@
return FAILURE;
}
+ zend_llist_init(&PG(ini_extension_list), sizeof(zval), NULL, 1);
+
safe_mode_state = PG(safe_mode);
open_basedir = PG(open_basedir);
@@ -209,6 +223,9 @@
zend_parse_ini_file(&fh, 1, php_config_ini_parser_cb, NULL);
+ zend_llist_apply(&PG(ini_extension_list), php_apply_ini_extension_list);
+ zend_llist_destroy(&PG(ini_extension_list));
+
if (php_ini_opened_path) {
zval tmp;
Index: php4/main/php_globals.h
diff -u php4/main/php_globals.h:1.59 php4/main/php_globals.h:1.60
--- php4/main/php_globals.h:1.59 Mon Nov 13 10:54:37 2000
+++ php4/main/php_globals.h Sun Jan 14 19:21:05 2001
@@ -124,6 +124,8 @@
zend_bool during_request_startup;
zend_bool allow_url_fopen;
+
+ zend_llist ini_extension_list;
};
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]