summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mysqlnd/mysqlnd.c11
-rw-r--r--ext/mysqlnd/mysqlnd_statistics.c26
-rw-r--r--ext/mysqlnd/mysqlnd_statistics.h4
3 files changed, 32 insertions, 9 deletions
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 */