Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_API.c
| From: | Andi Gutmans | Date: | Sat, 01 May 2004 23:02:15 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_API.c | ||
| References: | 1 | Groups: | php.zend-engine.cvs |
| Request: | Send a blank email to php-zend-engine-cvs+get-2625@lists.php.net to get a copy of this message | ||
Why is this bloat needed?
In any case, isn't it possible to do this patch much nicer my performing the zend_hash_add() earlier and checking it's return value?
Andi
At 08:34 PM 5/1/2004 +0000, Marcus Boerger wrote:
helly Sat May 1 16:34:07 2004 EDTModified files:/ZendEngine2 zend_API.cLog: Don't load modules twice http://cvs.php.net/diff.php/ZendEngine2/zend_API.c?r1=1.249&r2=1.250&ty=u Index: ZendEngine2/zend_API.c diff -u ZendEngine2/zend_API.c:1.249 ZendEngine2/zend_API.c:1.250--- ZendEngine2/zend_API.c:1.249 Tue Mar 30 13:36:53 2004 +++ ZendEngine2/zend_API.c Sat May 1 16:34:06 2004@@ -18,7 +18,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend_API.c,v 1.249 2004/03/30 18:36:53 helly Exp $ */ +/* $Id: zend_API.c,v 1.250 2004/05/01 20:34:06 helly Exp $ */ #include "zend.h" #include "zend_execute.h" @@ -1161,10 +1161,20 @@ ZEND_API int zend_startup_module(zend_module_entry *module) {if (module) { + int name_len; + char *lcname; + TSRMLS_FETCH();++ name_len = strlen(module->name); + lcname = zend_str_tolower_dup(module->name, name_len); + if (zend_hash_exists(&module_registry, lcname, name_len+1)) { + efree(lcname); + zend_error(E_CORE_WARNING, "Module '%s' already loaded", module->name); + return FAILURE; + } + efree(lcname); module->module_number = zend_next_free_module(); if (module->module_startup_func) { - TSRMLS_FETCH();-EG(current_module) = module; if (module->module_startup_func(MODULE_PERSISTENT, module->module_number TSRMLS_CC)==FAILURE) { zend_error(E_CORE_ERROR,"Unable to start %s module", module->name);@@ -1360,17 +1370,26 @@int retval, name_len; char *lcname; TSRMLS_FETCH();- + #if 0zend_printf("%s: Registering module %d\n", module->name, module->module_number);#endif+ name_len = strlen(module->name); + lcname = zend_str_tolower_dup(module->name, name_len);++ if (zend_hash_exists(&module_registry, lcname, name_len+1)) { + efree(lcname); + zend_error(E_CORE_WARNING, "Module '%s' already loaded", module->name); + return FAILURE; + }+if (module->functions && zend_register_functions(NULL, module->functions, NULL, module->type TSRMLS_CC)==FAILURE) { zend_error(E_CORE_WARNING,"%s: Unable to register functions, unable to load", module->name); + efree(lcname); return FAILURE; } module->module_started=1; - name_len = strlen(module->name); - lcname = zend_str_tolower_dup(module->name, name_len);+retval = zend_hash_add(&module_registry, lcname, name_len+1, (void *)module, sizeof(zend_module_entry), NULL); efree(lcname); return retval;-- Zend Engine CVS Mailing List (http://cvs.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php