From: Andrey Hristov Date: Tue, 29 Jan 2008 11:59:53 +0000 (+0000) Subject: Moved initialization code into a function. X-Git-Tag: RELEASE_1_3_1~245 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00877eff13cdc174724afa3955439742dbf26102;p=php Moved initialization code into a function. --- diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 3c779f6d59..9f22912356 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -133,10 +133,7 @@ void mysqlnd_library_init(TSRMLS_D) mysqlnd_library_initted = TRUE; _mysqlnd_init_ps_subsystem(); /* Should be calloc, as mnd_calloc will reference LOCK_access*/ - mysqlnd_global_stats = calloc(1, sizeof(MYSQLND_STATS)); -#ifdef ZTS - mysqlnd_global_stats->LOCK_access = tsrm_mutex_alloc(); -#endif + mysqlnd_stats_init(&mysqlnd_global_stats); } } /* }}} */ @@ -146,11 +143,7 @@ void mysqlnd_library_init(TSRMLS_D) void mysqlnd_library_end(TSRMLS_D) { if (mysqlnd_library_initted == TRUE) { -#ifdef ZTS - tsrm_mutex_free(mysqlnd_global_stats->LOCK_access); -#endif - /* mnd_free will reference LOCK_access and crash...*/ - free(mysqlnd_global_stats); + mysqlnd_stats_end(mysqlnd_global_stats); mysqlnd_global_stats = NULL; mysqlnd_library_initted = FALSE; } diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c index 3a6a0d51d4..7aaf30ca94 100644 --- a/ext/mysqlnd/mysqlnd_statistics.c +++ b/ext/mysqlnd/mysqlnd_statistics.c @@ -145,6 +145,32 @@ PHPAPI void _mysqlnd_get_client_stats(zval *return_value TSRMLS_DC ZEND_FILE_LIN /* }}} */ +/* {{{ mysqlnd_stats_init */ +void +mysqlnd_stats_init(MYSQLND_STATS ** stats) +{ + *stats = calloc(1, sizeof(MYSQLND_STATS)); +#ifdef ZTS + (*stats)->LOCK_access = tsrm_mutex_alloc(); +#endif + +} +/* }}} */ + + +/* {{{ mysqlnd_stats_end */ +void +mysqlnd_stats_end(MYSQLND_STATS * stats) +{ +#ifdef ZTS + tsrm_mutex_free(stats->LOCK_access); +#endif + /* mnd_free will reference LOCK_access and crash...*/ + free(stats); +} +/* }}} */ + + /* * Local variables: * tab-width: 4 diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h index d533d0c52a..e9a3acf86e 100644 --- a/ext/mysqlnd/mysqlnd_statistics.h +++ b/ext/mysqlnd/mysqlnd_statistics.h @@ -196,6 +196,10 @@ extern const MYSQLND_STRING mysqlnd_stats_values_names[]; void mysqlnd_fill_stats_hash(const MYSQLND_STATS * const stats, zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC); + +void mysqlnd_stats_init(MYSQLND_STATS ** stats); +void mysqlnd_stats_end(MYSQLND_STATS * stats); + #endif /* MYSQLND_STATISTICS_H */