]> granicus.if.org Git - php/commitdiff
Moved initialization code into a function.
authorAndrey Hristov <andrey@php.net>
Tue, 29 Jan 2008 11:59:53 +0000 (11:59 +0000)
committerAndrey Hristov <andrey@php.net>
Tue, 29 Jan 2008 11:59:53 +0000 (11:59 +0000)
ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd_statistics.c
ext/mysqlnd/mysqlnd_statistics.h

index 3c779f6d59ad3a4c6b0f2e1b1b03c56386541186..9f22912356305e49b25d76c19e5e3d45ce7430ad 100644 (file)
@@ -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;
        }
index 3a6a0d51d48e0a82ee4200fce0102ace427a161c..7aaf30ca94210b4bf9de86ecdfd802e362400f59 100644 (file)
@@ -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
index d533d0c52a6f35d2e152f4774c25e3b58fed60d4..e9a3acf86efc19b53bbea24d887ca11134d324a3 100644 (file)
@@ -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 */