diff options
author | Hartmut Holzgraefe <hholzgra@php.net> | 2002-03-23 15:37:27 +0000 |
---|---|---|
committer | Hartmut Holzgraefe <hholzgra@php.net> | 2002-03-23 15:37:27 +0000 |
commit | e40ce9963ec4731b6f7e078608b37f0da13438f3 (patch) | |
tree | ffb9597e1eb8e877bbca91cba720684e07c21fbd | |
parent | e2f110d98210b028e38fdc37086a84f0055917f4 (diff) | |
download | php-git-e40ce9963ec4731b6f7e078608b37f0da13438f3.tar.gz |
dl is now aware of modules compiled for php <4.1.0
which have a slightly different module_entry structure
-rw-r--r-- | ext/standard/dl.c | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/ext/standard/dl.c b/ext/standard/dl.c index bbf3c6b8ad..fae9ef4fbc 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -161,15 +161,53 @@ void php_dl(pval *file, int type, pval *return_value TSRMLS_DC) module_entry = get_module(); if ((module_entry->zend_debug != ZEND_DEBUG) || (module_entry->zts != USING_ZTS) || (module_entry->zend_api != ZEND_MODULE_API_NO)) { - php_error(error_type, - "%s: Unable to initialize module\n" - "Module compiled with debug=%d, thread-safety=%d module API=%d\n" - "PHP compiled with debug=%d, thread-safety=%d module API=%d\n" - "These options need to match\n", - module_entry->name, module_entry->zend_debug, module_entry->zts, module_entry->zend_api, - ZEND_DEBUG, USING_ZTS, ZEND_MODULE_API_NO); - DL_UNLOAD(handle); - RETURN_FALSE; + /* Check for pre-4.1.0 module which has a slightly different module_entry structure :( */ + struct pre_4_1_0_module_entry { + char *name; + zend_function_entry *functions; + int (*module_startup_func)(INIT_FUNC_ARGS); + int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS); + int (*request_startup_func)(INIT_FUNC_ARGS); + int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS); + void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS); + int (*global_startup_func)(void); + int (*global_shutdown_func)(void); + int globals_id; + int module_started; + unsigned char type; + void *handle; + int module_number; + unsigned char zend_debug; + unsigned char zts; + unsigned int zend_api; + }; + + char *name; + int zend_api; + unsigned char zend_debug, zts; + + if(( ((struct pre_4_1_0_module_entry *)module_entry)->zend_api > 20000000) + &&(((struct pre_4_1_0_module_entry *)module_entry)->zend_api < 20010901)) { + name = ((struct pre_4_1_0_module_entry *)module_entry)->name; + zend_api = ((struct pre_4_1_0_module_entry *)module_entry)->zend_api; + zend_debug = ((struct pre_4_1_0_module_entry *)module_entry)->zend_debug; + zts = ((struct pre_4_1_0_module_entry *)module_entry)->zts; + } else { + name = module_entry->name; + zend_api = module_entry->zend_api; + zend_debug = module_entry->zend_debug; + zts = module_entry->zts; + } + + php_error(error_type, + "%s: Unable to initialize module\n" + "Module compiled with module API=%d, debug=%d, thread-safety=%d\n" + "PHP compiled with module API=%d, debug=%d, thread-safety=%d\n" + "These options need to match\n", + name, zend_api, zend_debug, zts, + ZEND_MODULE_API_NO, ZEND_DEBUG, USING_ZTS); + DL_UNLOAD(handle); + RETURN_FALSE; } Z_TYPE_P(module_entry) = type; module_entry->module_number = zend_next_free_module(); |