scottmac Mon Jun 25 20:19:30 2007 UTC
Modified files:
/php-src/ext/mysql php_mysql.c
/php-src/ext/mysqli mysqli.c
Log:
MFB: Fixed bug #41350 (my_thread_global_end() error during request shutdown
on Windows).
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/php_mysql.c?r1=1.237&r2=1.238&diff_format=u
Index: php-src/ext/mysql/php_mysql.c
diff -u php-src/ext/mysql/php_mysql.c:1.237 php-src/ext/mysql/php_mysql.c:1.238
--- php-src/ext/mysql/php_mysql.c:1.237 Thu Jun 7 12:17:16 2007
+++ php-src/ext/mysql/php_mysql.c Mon Jun 25 20:19:30 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mysql.c,v 1.237 2007/06/07 12:17:16 tony2001 Exp $ */
+/* $Id: php_mysql.c,v 1.238 2007/06/25 20:19:30 scottmac Exp $ */
/* TODO:
*
@@ -395,6 +395,10 @@
REGISTER_LONG_CONSTANT("MYSQL_CLIENT_INTERACTIVE", CLIENT_INTERACTIVE,
CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MYSQL_CLIENT_IGNORE_SPACE",
CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT);
+ if (mysql_server_init(0, NULL, NULL)) {
+ return FAILURE;
+ }
+
return SUCCESS;
}
/* }}} */
@@ -403,6 +407,16 @@
*/
PHP_MSHUTDOWN_FUNCTION(mysql)
{
+#ifdef PHP_WIN32
+ unsigned long client_ver = mysql_get_client_version;
+ /* Can't call mysql_server_end() multiple times prior to 5.0.42 on
Windows */
+ if ((client_ver > 50042 && client_ver < 50100) || client_ver > 50122) {
+ mysql_server_end();
+ }
+#else
+ mysql_server_end();
+#endif
+
UNREGISTER_INI_ENTRIES();
return SUCCESS;
}
@@ -412,6 +426,11 @@
*/
PHP_RINIT_FUNCTION(mysql)
{
+#ifdef ZTS
+ if (mysql_thread_init()) {
+ return FAILURE;
+ }
+#endif
MySG(default_link)=-1;
MySG(num_links) = MySG(num_persistent);
/* Reset connect error/errno on every request */
@@ -426,6 +445,9 @@
*/
PHP_RSHUTDOWN_FUNCTION(mysql)
{
+#ifdef ZTS
+ mysql_thread_end();
+#endif
if (MySG(trace_mode)) {
if (MySG(result_allocated)){
php_error_docref("function.mysql-free-result"
TSRMLS_CC, E_WARNING, "%lu result set(s) not freed. Use mysql_free_result to
free result sets which were requested using mysql_query()",
MySG(result_allocated));
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/mysqli.c?r1=1.105&r2=1.106&diff_format=u
Index: php-src/ext/mysqli/mysqli.c
diff -u php-src/ext/mysqli/mysqli.c:1.105 php-src/ext/mysqli/mysqli.c:1.106
--- php-src/ext/mysqli/mysqli.c:1.105 Fri Mar 23 08:21:08 2007
+++ php-src/ext/mysqli/mysqli.c Mon Jun 25 20:19:30 2007
@@ -15,7 +15,7 @@
| Author: Georg Richter <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
- $Id: mysqli.c,v 1.105 2007/03/23 08:21:08 tony2001 Exp $
+ $Id: mysqli.c,v 1.106 2007/06/25 20:19:30 scottmac Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -662,6 +662,10 @@
REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS
| CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", 0, CONST_CS |
CONST_PERSISTENT);
+ if (mysql_server_init(0, NULL, NULL)) {
+ return FAILURE;
+ }
+
return SUCCESS;
}
/* }}} */
@@ -670,6 +674,16 @@
*/
PHP_MSHUTDOWN_FUNCTION(mysqli)
{
+#ifdef PHP_WIN32
+ unsigned long client_ver = mysql_get_client_version;
+ /* Can't call mysql_server_end() multiple times prior to 5.0.42 on
Windows */
+ if ((client_ver > 50042 && client_ver < 50100) || client_ver > 50122) {
+ mysql_server_end();
+ }
+#else
+ mysql_server_end();
+#endif
+
zend_hash_destroy(&mysqli_driver_properties);
zend_hash_destroy(&mysqli_result_properties);
zend_hash_destroy(&mysqli_stmt_properties);
@@ -686,6 +700,11 @@
*/
PHP_RINIT_FUNCTION(mysqli)
{
+#ifdef ZTS
+ if (mysql_thread_init()) {
+ return FAILURE;
+ }
+#endif
MyG(error_msg) = NULL;
MyG(error_no) = 0;
@@ -697,6 +716,9 @@
*/
PHP_RSHUTDOWN_FUNCTION(mysqli)
{
+#ifdef ZTS
+ mysql_thread_end();
+#endif
if (MyG(error_msg)) {
efree(MyG(error_msg));
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php