Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:23988 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 35265 invoked by uid 1010); 8 Jun 2006 12:16:17 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 35250 invoked from network); 8 Jun 2006 12:16:17 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 8 Jun 2006 12:16:17 -0000 X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 80.74.107.235 mail.zend.com Linux 2.5 (sometimes 2.4) (4) Received: from ([80.74.107.235:54391] helo=mail.zend.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 36/3E-00946-E0518844 for ; Thu, 08 Jun 2006 08:16:16 -0400 Received: (qmail 7691 invoked from network); 8 Jun 2006 12:15:43 -0000 Received: from internal.zend.office (HELO thinkpad) (10.1.1.1) by internal.zend.office with SMTP; 8 Jun 2006 12:15:43 -0000 To: , "Ilia Alshanetsky" Cc: "Andi Gutmans" , "Steph" Date: Thu, 8 Jun 2006 16:15:56 +0400 Message-ID: <000001c68af5$50876930$6e02a8c0@thinkpad> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0001_01C68B16.D7990930" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6626 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Subject: [PATCH] Automatic module globals management From: dmitry@zend.com ("Dmitry Stogov") ------=_NextPart_000_0001_01C68B16.D7990930 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, The attached patch (for PHP_5_2) implements automatic management of module globals. The problem that module globals must be unregistered before extension unloading, because "globls_dtor" function is unloaded together with extension and cannot be called. To solve this problem extension writers now use the following pattern: PHP_MSHUTDOWN_FUNCTION(mod_name) { -#ifdef ZTS - ts_free_id(mod_name_globals_id); -#else - mod_name_globals_dtor(&mod_name_globals TSRMLS_CC); -#endif With my patch, extension writers should just extend module descriptor with globals descriptor and ctor/dtor callbacks. PHP_RSHUTDOWN(mod_name), PHP_MINFO(mod_name), NO_VERSION_YET, - STANDARD_MODULE_PROPERTIES + NULL, + ZEND_MG(mod_name), + ZEND_MGCTOR(mod_name), + ZEND_MGCTOR(mod_name), + STANDARD_MODULE_PROPERTIES_EX2 }; Old extensions are source compatible and may work without modification. The patch modifies only several extensions, but will modify others too. I like commit the patch into HEAD and PHP_5_2. Any objections, additional ideas? Thanks. Dmitry. ------=_NextPart_000_0001_01C68B16.D7990930 Content-Type: text/plain; name="zts_globals-2.diff.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="zts_globals-2.diff.txt" Index: Zend/zend_API.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/ZendEngine2/zend_API.c,v=0A= retrieving revision 1.296.2.27.2.17=0A= diff -u -p -d -r1.296.2.27.2.17 zend_API.c=0A= --- Zend/zend_API.c 7 Jun 2006 09:43:54 -0000 1.296.2.27.2.17=0A= +++ Zend/zend_API.c 8 Jun 2006 10:52:52 -0000=0A= @@ -1448,6 +1448,15 @@ ZEND_API int zend_startup_module_ex(zend=0A= }=0A= }=0A= =0A= + if (module->globals_size) {=0A= +#ifdef ZTS=0A= + ts_allocate_id(module->globals_id_ptr, module->globals_size, = (ts_allocate_ctor) module->globals_ctor, (ts_allocate_dtor) = module->globals_dtor);=0A= +#else=0A= + if (module->globals_ctor) {=0A= + module->globals_ctor(module->globals_ptr TSRMLS_CC);=0A= + }=0A= +#endif=0A= + }=0A= if (module->module_startup_func) {=0A= EG(current_module) =3D module;=0A= if (module->module_startup_func(module->type, module->module_number = TSRMLS_CC)=3D=3DFAILURE) {=0A= @@ -1881,6 +1890,17 @@ void module_destructor(zend_module_entry=0A= #endif=0A= module->module_shutdown_func(module->type, module->module_number = TSRMLS_CC);=0A= }=0A= +=0A= + if (module->globals_size) {=0A= +#ifdef ZTS=0A= + ts_free_id(*module->globals_id_ptr);=0A= +#else=0A= + if (module->globals_dtor) {=0A= + module->globals_dtor(module->globals_ptr TSRMLS_CC);=0A= + }=0A= +#endif=0A= + }=0A= +=0A= module->module_started=3D0;=0A= if (module->functions) {=0A= zend_unregister_functions(module->functions, -1, NULL TSRMLS_CC);=0A= Index: Zend/zend_API.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/ZendEngine2/zend_API.h,v=0A= retrieving revision 1.207.2.8.2.3=0A= diff -u -p -d -r1.207.2.8.2.3 zend_API.h=0A= --- Zend/zend_API.h 7 Jun 2006 09:43:54 -0000 1.207.2.8.2.3=0A= +++ Zend/zend_API.h 8 Jun 2006 10:52:52 -0000=0A= @@ -79,6 +79,8 @@ typedef struct _zend_function_entry {=0A= #define ZEND_MODULE_DEACTIVATE_N(module) zm_deactivate_##module=0A= #define ZEND_MODULE_POST_ZEND_DEACTIVATE_N(module) = zm_post_zend_deactivate_##module=0A= #define ZEND_MODULE_INFO_N(module) zm_info_##module=0A= +#define ZEND_MODULE_GLOBALS_CTOR_N(module) zm_globals_ctor_##module=0A= +#define ZEND_MODULE_GLOBALS_DTOR_N(module) zm_globals_dtor_##module=0A= =0A= /* Declaration macros */=0A= #define ZEND_MODULE_STARTUP_D(module) int = ZEND_MODULE_STARTUP_N(module)(INIT_FUNC_ARGS)=0A= @@ -87,6 +89,8 @@ typedef struct _zend_function_entry {=0A= #define ZEND_MODULE_DEACTIVATE_D(module) int = ZEND_MODULE_DEACTIVATE_N(module)(SHUTDOWN_FUNC_ARGS)=0A= #define ZEND_MODULE_POST_ZEND_DEACTIVATE_D(module) int = ZEND_MODULE_POST_ZEND_DEACTIVATE_N(module)(void)=0A= #define ZEND_MODULE_INFO_D(module) void = ZEND_MODULE_INFO_N(module)(ZEND_MODULE_INFO_FUNC_ARGS)=0A= +#define ZEND_MODULE_GLOBALS_CTOR_D(module) void = ZEND_MODULE_GLOBALS_CTOR_N(module)(zend_##module##_globals = *module##_globals TSRMLS_DC)=0A= +#define ZEND_MODULE_GLOBALS_DTOR_D(module) void = ZEND_MODULE_GLOBALS_DTOR_N(module)(zend_##module##_globals = *module##_globals TSRMLS_DC)=0A= =0A= #define ZEND_GET_MODULE(name) \=0A= BEGIN_EXTERN_C()\=0A= @@ -611,12 +615,16 @@ END_EXTERN_C()=0A= #define ZEND_RINIT ZEND_MODULE_ACTIVATE_N=0A= #define ZEND_RSHUTDOWN ZEND_MODULE_DEACTIVATE_N=0A= #define ZEND_MINFO ZEND_MODULE_INFO_N=0A= +#define ZEND_MGCTOR(module) ((void (*)(void* = TSRMLS_DC))(ZEND_MODULE_GLOBALS_CTOR_N(module)))=0A= +#define ZEND_MGDTOR(module) ((void (*)(void* = TSRMLS_DC))(ZEND_MODULE_GLOBALS_DTOR_N(module)))=0A= =0A= #define ZEND_MINIT_FUNCTION ZEND_MODULE_STARTUP_D=0A= #define ZEND_MSHUTDOWN_FUNCTION ZEND_MODULE_SHUTDOWN_D=0A= #define ZEND_RINIT_FUNCTION ZEND_MODULE_ACTIVATE_D=0A= #define ZEND_RSHUTDOWN_FUNCTION ZEND_MODULE_DEACTIVATE_D=0A= #define ZEND_MINFO_FUNCTION ZEND_MODULE_INFO_D=0A= +#define ZEND_MGCTOR_FUNCTION ZEND_MODULE_GLOBALS_CTOR_D=0A= +#define ZEND_MGDTOR_FUNCTION ZEND_MODULE_GLOBALS_DTOR_D=0A= =0A= END_EXTERN_C()=0A= =0A= Index: Zend/zend_modules.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/ZendEngine2/zend_modules.h,v=0A= retrieving revision 1.67.2.3.2.1=0A= diff -u -p -d -r1.67.2.3.2.1 zend_modules.h=0A= --- Zend/zend_modules.h 9 May 2006 23:53:23 -0000 1.67.2.3.2.1=0A= +++ Zend/zend_modules.h 8 Jun 2006 10:52:53 -0000=0A= @@ -39,7 +39,7 @@ extern struct _zend_arg_info fourth_arg_=0A= extern struct _zend_arg_info fifth_arg_force_ref[6];=0A= extern struct _zend_arg_info all_args_by_ref[1];=0A= =0A= -#define ZEND_MODULE_API_NO 20050922=0A= +#define ZEND_MODULE_API_NO 20060601=0A= #ifdef ZTS=0A= #define USING_ZTS 1=0A= #else=0A= @@ -52,7 +52,11 @@ extern struct _zend_arg_info all_args_by=0A= #define ZE2_STANDARD_MODULE_HEADER \=0A= STANDARD_MODULE_HEADER_EX, ini_entries, NULL=0A= =0A= -#define STANDARD_MODULE_PROPERTIES_EX 0, 0, 0, NULL, 0=0A= +#define STANDARD_MODULE_PROPERTIES_EX \=0A= + 0, NULL, NULL, NULL, STANDARD_MODULE_PROPERTIES_EX2=0A= +=0A= +#define STANDARD_MODULE_PROPERTIES_EX2 \=0A= + 0, 0, NULL, 0=0A= =0A= #define STANDARD_MODULE_PROPERTIES \=0A= NULL, STANDARD_MODULE_PROPERTIES_EX=0A= @@ -82,13 +86,26 @@ struct _zend_module_entry {=0A= void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS);=0A= char *version;=0A= int (*post_deactivate_func)(void);=0A= - int globals_id;=0A= + size_t globals_size;=0A= +#ifdef ZTS=0A= + ts_rsrc_id* globals_id_ptr;=0A= +#else=0A= + void* globals_ptr;=0A= +#endif=0A= + void (*globals_ctor)(void *global TSRMLS_DC);=0A= + void (*globals_dtor)(void *global TSRMLS_DC);=0A= int module_started;=0A= unsigned char type;=0A= void *handle;=0A= int module_number;=0A= };=0A= =0A= +#ifdef ZTS=0A= +# define ZEND_MG(module_name) sizeof(zend_##module_name##_globals), = &module_name##_globals_id=0A= +#else=0A= +# define ZEND_MG(module_name) sizeof(zend_##module_name##_globals), = &module_name##_globals=0A= +#endif=0A= +=0A= #define MODULE_DEP_REQUIRED 1=0A= #define MODULE_DEP_CONFLICTS 2=0A= #define MODULE_DEP_OPTIONAL 3=0A= Index: ext/bcmath/bcmath.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/bcmath/bcmath.c,v=0A= retrieving revision 1.62.2.2=0A= diff -u -p -d -r1.62.2.2 bcmath.c=0A= --- ext/bcmath/bcmath.c 1 Jan 2006 12:50:00 -0000 1.62.2.2=0A= +++ ext/bcmath/bcmath.c 8 Jun 2006 10:52:58 -0000=0A= @@ -31,6 +31,8 @@=0A= #include "php_bcmath.h"=0A= #include "libbcmath/src/bcmath.h"=0A= =0A= +static ZEND_MGCTOR_FUNCTION(bcmath);=0A= +=0A= ZEND_DECLARE_MODULE_GLOBALS(bcmath);=0A= =0A= zend_function_entry bcmath_functions[] =3D {=0A= @@ -57,7 +59,11 @@ zend_module_entry bcmath_module_entry =3D =0A= PHP_RSHUTDOWN(bcmath),=0A= PHP_MINFO(bcmath),=0A= NO_VERSION_YET,=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(bcmath),=0A= + ZEND_MGCTOR(bcmath),=0A= + NULL,=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= =0A= #ifdef COMPILE_DL_BCMATH=0A= @@ -72,7 +78,7 @@ PHP_INI_END()=0A= =0A= /* {{{ php_bcmath_init_globals=0A= */=0A= -static void php_bcmath_init_globals(zend_bcmath_globals *bcmath_globals)=0A= +static ZEND_MGCTOR_FUNCTION(bcmath)=0A= {=0A= bcmath_globals->bc_precision =3D 0;=0A= }=0A= @@ -82,8 +88,6 @@ static void php_bcmath_init_globals(zend=0A= */=0A= PHP_MINIT_FUNCTION(bcmath)=0A= {=0A= - ZEND_INIT_MODULE_GLOBALS(bcmath, php_bcmath_init_globals, NULL);=0A= -=0A= REGISTER_INI_ENTRIES();=0A= =0A= return SUCCESS;=0A= Index: ext/date/php_date.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/date/php_date.c,v=0A= retrieving revision 1.43.2.45.2.6=0A= diff -u -p -d -r1.43.2.45.2.6 php_date.c=0A= --- ext/date/php_date.c 30 May 2006 15:14:22 -0000 1.43.2.45.2.6=0A= +++ ext/date/php_date.c 8 Jun 2006 10:52:59 -0000=0A= @@ -29,6 +29,8 @@=0A= #include "lib/timelib.h"=0A= #include =0A= =0A= +static ZEND_MGCTOR_FUNCTION(date);=0A= +=0A= /* {{{ Function table */=0A= zend_function_entry date_functions[] =3D {=0A= PHP_FE(strtotime, NULL)=0A= @@ -188,13 +190,17 @@ zend_module_entry date_module_entry =3D {=0A= PHP_RSHUTDOWN(date), /* request shutdown */=0A= PHP_MINFO(date), /* extension info */=0A= PHP_VERSION, /* extension version */=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(date),=0A= + ZEND_MGCTOR(date),=0A= + NULL,=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= /* }}} */=0A= =0A= =0A= /* {{{ php_date_init_globals */=0A= -static void php_date_init_globals(zend_date_globals *date_globals)=0A= +static ZEND_MGCTOR_FUNCTION(date)=0A= {=0A= date_globals->default_timezone =3D NULL;=0A= date_globals->timezone =3D NULL;=0A= @@ -334,7 +340,6 @@ PHP_RSHUTDOWN_FUNCTION(date)=0A= /* {{{ PHP_MINIT_FUNCTION */=0A= PHP_MINIT_FUNCTION(date)=0A= {=0A= - ZEND_INIT_MODULE_GLOBALS(date, php_date_init_globals, NULL);=0A= REGISTER_INI_ENTRIES();=0A= #ifdef EXPERIMENTAL_DATE_SUPPORT=0A= date_register_classes(TSRMLS_C);=0A= Index: ext/pcre/php_pcre.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/pcre/php_pcre.c,v=0A= retrieving revision 1.168.2.9.2.4=0A= diff -u -p -d -r1.168.2.9.2.4 php_pcre.c=0A= --- ext/pcre/php_pcre.c 29 May 2006 21:31:49 -0000 1.168.2.9.2.4=0A= +++ ext/pcre/php_pcre.c 8 Jun 2006 10:53:02 -0000=0A= @@ -97,7 +97,7 @@ static void php_free_pcre_cache(void *da=0A= }=0A= =0A= =0A= -static void php_pcre_init_globals(zend_pcre_globals *pcre_globals = TSRMLS_DC)=0A= +static ZEND_MGCTOR_FUNCTION(pcre)=0A= {=0A= zend_hash_init(&pcre_globals->pcre_cache, 0, NULL, = php_free_pcre_cache, 1);=0A= pcre_globals->backtrack_limit =3D 0;=0A= @@ -105,7 +105,7 @@ static void php_pcre_init_globals(zend_p=0A= pcre_globals->error_code =3D PHP_PCRE_NO_ERROR;=0A= }=0A= =0A= -static void php_pcre_shutdown_globals(zend_pcre_globals *pcre_globals = TSRMLS_DC)=0A= +static ZEND_MGDTOR_FUNCTION(pcre)=0A= {=0A= zend_hash_destroy(&pcre_globals->pcre_cache);=0A= }=0A= @@ -129,8 +129,6 @@ static PHP_MINFO_FUNCTION(pcre)=0A= /* {{{ PHP_MINIT_FUNCTION(pcre) */=0A= static PHP_MINIT_FUNCTION(pcre)=0A= {=0A= - ZEND_INIT_MODULE_GLOBALS(pcre, php_pcre_init_globals, = php_pcre_shutdown_globals);=0A= -=0A= REGISTER_INI_ENTRIES();=0A= =0A= REGISTER_LONG_CONSTANT("PREG_PATTERN_ORDER", PREG_PATTERN_ORDER, = CONST_CS | CONST_PERSISTENT);=0A= @@ -154,12 +152,6 @@ static PHP_MINIT_FUNCTION(pcre)=0A= /* {{{ PHP_MSHUTDOWN_FUNCTION(pcre) */=0A= static PHP_MSHUTDOWN_FUNCTION(pcre)=0A= {=0A= -#ifdef ZTS=0A= - ts_free_id(pcre_globals_id); =0A= -#else=0A= - php_pcre_shutdown_globals(&pcre_globals TSRMLS_CC);=0A= -#endif=0A= -=0A= UNREGISTER_INI_ENTRIES();=0A= =0A= return SUCCESS;=0A= @@ -1776,7 +1768,11 @@ zend_module_entry pcre_module_entry =3D {=0A= NULL,=0A= PHP_MINFO(pcre),=0A= NO_VERSION_YET,=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(pcre),=0A= + ZEND_MGCTOR(pcre),=0A= + ZEND_MGDTOR(pcre),=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= =0A= #ifdef COMPILE_DL_PCRE=0A= Index: ext/pdo/pdo.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/pdo/pdo.c,v=0A= retrieving revision 1.57.2.17.2.5=0A= diff -u -p -d -r1.57.2.17.2.5 pdo.c=0A= --- ext/pdo/pdo.c 7 Jun 2006 21:14:04 -0000 1.57.2.17.2.5=0A= +++ ext/pdo/pdo.c 8 Jun 2006 10:53:02 -0000=0A= @@ -130,6 +130,8 @@ static zend_module_dep pdo_deps[] =3D {=0A= #endif=0A= /* }}} */=0A= =0A= +static ZEND_MGCTOR_FUNCTION(pdo);=0A= +=0A= /* {{{ pdo_module_entry */=0A= zend_module_entry pdo_module_entry =3D {=0A= #if ZEND_MODULE_API_NO >=3D 20050922=0A= @@ -146,7 +148,11 @@ zend_module_entry pdo_module_entry =3D {=0A= NULL,=0A= PHP_MINFO(pdo),=0A= "1.0.4dev",=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(pdo),=0A= + ZEND_MGCTOR(pdo),=0A= + NULL,=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= /* }}} */=0A= =0A= @@ -164,7 +170,7 @@ PHP_INI_END()=0A= /* }}} */=0A= =0A= /* {{{ php_pdo_init_globals */=0A= -static void php_pdo_init_globals(zend_pdo_globals *pdo_globals)=0A= +static ZEND_MGCTOR_FUNCTION(pdo)=0A= {=0A= pdo_globals->global_value =3D 0;=0A= }=0A= @@ -321,7 +327,6 @@ PHP_MINIT_FUNCTION(pdo)=0A= =0A= spl_ce_RuntimeException =3D NULL;=0A= =0A= - ZEND_INIT_MODULE_GLOBALS(pdo, php_pdo_init_globals, NULL);=0A= REGISTER_INI_ENTRIES();=0A= =0A= if (FAILURE =3D=3D pdo_sqlstate_init_error_table()) {=0A= Index: ext/posix/posix.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/posix/posix.c,v=0A= retrieving revision 1.70.2.3=0A= diff -u -p -d -r1.70.2.3 posix.c=0A= --- ext/posix/posix.c 1 Jan 2006 12:50:12 -0000 1.70.2.3=0A= +++ ext/posix/posix.c 8 Jun 2006 10:53:06 -0000=0A= @@ -148,7 +148,7 @@ static PHP_MINFO_FUNCTION(posix)=0A= }=0A= /* }}} */=0A= =0A= -static void php_posix_init_globals(zend_posix_globals *posix_globals = TSRMLS_DC)=0A= +static ZEND_MGCTOR_FUNCTION(posix)=0A= {=0A= posix_globals->last_error =3D 0;=0A= }=0A= @@ -157,7 +157,6 @@ static void php_posix_init_globals(zend_=0A= */=0A= static PHP_MINIT_FUNCTION(posix)=0A= {=0A= - ZEND_INIT_MODULE_GLOBALS(posix, php_posix_init_globals, NULL);=0A= REGISTER_LONG_CONSTANT("POSIX_F_OK", F_OK, CONST_CS | = CONST_PERSISTENT);=0A= REGISTER_LONG_CONSTANT("POSIX_X_OK", X_OK, CONST_CS | = CONST_PERSISTENT);=0A= REGISTER_LONG_CONSTANT("POSIX_W_OK", W_OK, CONST_CS | = CONST_PERSISTENT);=0A= @@ -196,7 +195,11 @@ zend_module_entry posix_module_entry =3D {=0A= NULL, =0A= PHP_MINFO(posix),=0A= NO_VERSION_YET,=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(posix),=0A= + ZEND_MGCTOR(posix),=0A= + NULL,=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= /* }}} */=0A= =0A= Index: ext/spl/php_spl.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/spl/php_spl.c,v=0A= retrieving revision 1.52.2.28.2.2=0A= diff -u -p -d -r1.52.2.28.2.2 php_spl.c=0A= --- ext/spl/php_spl.c 7 Jun 2006 09:44:41 -0000 1.52.2.28.2.2=0A= +++ ext/spl/php_spl.c 8 Jun 2006 10:53:06 -0000=0A= @@ -52,7 +52,7 @@ zend_function_entry spl_functions_none[]=0A= =0A= /* {{{ spl_init_globals=0A= */=0A= -static void spl_init_globals(zend_spl_globals *spl_globals)=0A= +static ZEND_MGCTOR_FUNCTION(spl)=0A= {=0A= spl_globals->autoload_extensions =3D NULL;=0A= spl_globals->autoload_functions =3D NULL;=0A= @@ -645,8 +645,6 @@ zend_function_entry spl_functions[] =3D {=0A= */=0A= PHP_MINIT_FUNCTION(spl)=0A= {=0A= - ZEND_INIT_MODULE_GLOBALS(spl, spl_init_globals, NULL);=0A= -=0A= PHP_MINIT(spl_iterators)(INIT_FUNC_ARGS_PASSTHRU);=0A= PHP_MINIT(spl_array)(INIT_FUNC_ARGS_PASSTHRU);=0A= PHP_MINIT(spl_directory)(INIT_FUNC_ARGS_PASSTHRU);=0A= @@ -704,7 +702,11 @@ zend_module_entry spl_module_entry =3D {=0A= PHP_RSHUTDOWN(spl),=0A= PHP_MINFO(spl),=0A= "0.2",=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(spl),=0A= + ZEND_MGCTOR(spl),=0A= + NULL,=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= /* }}} */=0A= =0A= Index: ext/sqlite/sqlite.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/sqlite/sqlite.c,v=0A= retrieving revision 1.166.2.13.2.1=0A= diff -u -p -d -r1.166.2.13.2.1 sqlite.c=0A= --- ext/sqlite/sqlite.c 9 May 2006 23:54:15 -0000 1.166.2.13.2.1=0A= +++ ext/sqlite/sqlite.c 8 Jun 2006 10:53:12 -0000=0A= @@ -283,6 +283,8 @@ static zend_module_dep sqlite_deps[] =3D {=0A= {NULL, NULL, NULL}=0A= };=0A= =0A= +static ZEND_MGCTOR_FUNCTION(sqlite);=0A= +=0A= zend_module_entry sqlite_module_entry =3D {=0A= #if ZEND_MODULE_API_NO >=3D 20050922=0A= STANDARD_MODULE_HEADER_EX, NULL,=0A= @@ -300,7 +302,11 @@ zend_module_entry sqlite_module_entry =3D =0A= #if ZEND_MODULE_API_NO >=3D 20010901=0A= PHP_SQLITE_MODULE_VERSION,=0A= #endif=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(sqlite),=0A= + ZEND_MGCTOR(sqlite),=0A= + NULL,=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= =0A= =0A= @@ -1016,10 +1022,9 @@ zend_object_iterator *sqlite_get_iterato=0A= }=0A= /* }}} */=0A= =0A= -static int init_sqlite_globals(zend_sqlite_globals *g)=0A= +static ZEND_MGCTOR_FUNCTION(sqlite)=0A= {=0A= - g->assoc_case =3D 0;=0A= - return SUCCESS;=0A= + sqlite_globals->assoc_case =3D 0;=0A= }=0A= =0A= PHP_MINIT_FUNCTION(sqlite)=0A= @@ -1051,8 +1056,6 @@ PHP_MINIT_FUNCTION(sqlite)=0A= sqlite_ce_query->get_iterator =3D sqlite_get_iterator;=0A= sqlite_ce_query->iterator_funcs.funcs =3D &sqlite_query_iterator_funcs;=0A= =0A= - ZEND_INIT_MODULE_GLOBALS(sqlite, init_sqlite_globals, NULL);=0A= -=0A= REGISTER_INI_ENTRIES();=0A= =0A= #if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)=0A= Index: ext/zlib/zlib.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/zlib/zlib.c,v=0A= retrieving revision 1.183.2.6=0A= diff -u -p -d -r1.183.2.6 zlib.c=0A= --- ext/zlib/zlib.c 1 Jan 2006 12:50:17 -0000 1.183.2.6=0A= +++ ext/zlib/zlib.c 8 Jun 2006 10:53:13 -0000=0A= @@ -113,6 +113,8 @@ zend_function_entry php_zlib_functions[]=0A= };=0A= /* }}} */=0A= =0A= +ZEND_DECLARE_MODULE_GLOBALS(zlib)=0A= +=0A= /* {{{ php_zlib_module_entry=0A= */=0A= zend_module_entry php_zlib_module_entry =3D {=0A= @@ -125,12 +127,14 @@ zend_module_entry php_zlib_module_entry =0A= NULL,=0A= PHP_MINFO(zlib),=0A= "1.1",=0A= - STANDARD_MODULE_PROPERTIES=0A= + NULL,=0A= + ZEND_MG(zlib),=0A= + NULL,=0A= + NULL,=0A= + STANDARD_MODULE_PROPERTIES_EX2=0A= };=0A= /* }}} */=0A= =0A= -ZEND_DECLARE_MODULE_GLOBALS(zlib)=0A= -=0A= #ifdef COMPILE_DL_ZLIB=0A= ZEND_GET_MODULE(php_zlib)=0A= #endif=0A= @@ -212,9 +216,6 @@ static void php_zlib_init_globals(zend_z=0A= */=0A= PHP_MINIT_FUNCTION(zlib)=0A= {=0A= -#ifdef ZTS=0A= - ts_allocate_id(&zlib_globals_id, sizeof(zend_zlib_globals), = (ts_allocate_ctor) php_zlib_init_globals, NULL);=0A= -#endif=0A= php_register_url_stream_wrapper("compress.zlib", = &php_stream_gzip_wrapper TSRMLS_CC);=0A= php_stream_filter_register_factory("zlib.*", &php_zlib_filter_factory = TSRMLS_CC);=0A= =0A= ------=_NextPart_000_0001_01C68B16.D7990930--