diff options
author | Scott MacVicar <scottmac@php.net> | 2007-06-25 20:19:30 +0000 |
---|---|---|
committer | Scott MacVicar <scottmac@php.net> | 2007-06-25 20:19:30 +0000 |
commit | 8842c24db74de51c57749bc1f7e0334d9e97ab6a (patch) | |
tree | ec90b10bef0342c00befe68f7465ea18f7aa3e20 /ext/mysql/php_mysql.c | |
parent | d2d0ada9da6805da61a14d5832d55a79198087bf (diff) | |
download | php-git-8842c24db74de51c57749bc1f7e0334d9e97ab6a.tar.gz |
MFB: Fixed bug #41350 (my_thread_global_end() error during request shutdown on Windows).
Diffstat (limited to 'ext/mysql/php_mysql.c')
-rw-r--r-- | ext/mysql/php_mysql.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index 4c6309f444..d3ae44de48 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -395,6 +395,10 @@ ZEND_MODULE_STARTUP_D(mysql) 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 @@ ZEND_MODULE_STARTUP_D(mysql) */ 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_MSHUTDOWN_FUNCTION(mysql) */ 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_RINIT_FUNCTION(mysql) */ 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)); |