diff options
author | Andrey Hristov <andrey@php.net> | 2008-06-24 13:19:29 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2008-06-24 13:19:29 +0000 |
commit | 943e9a577ba41cfc066e22640465f3bf1717faeb (patch) | |
tree | 7b7b7d5267de19fd821886ebcc550ad6425d4551 /ext/mysql/php_mysql.c | |
parent | ff83deb66d1ebbeb965888e7d19459bdd9488cf9 (diff) | |
download | php-git-943e9a577ba41cfc066e22640465f3bf1717faeb.tar.gz |
Fix double-free, introduced lately
Diffstat (limited to 'ext/mysql/php_mysql.c')
-rw-r--r-- | ext/mysql/php_mysql.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index 0e5319cb21..594a1de623 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -365,6 +365,9 @@ static void _close_mysql_plink(zend_rsrc_list_entry *rsrc TSRMLS_DC) void (*handler) (int); handler = signal(SIGPIPE, SIG_IGN); +#ifdef MYSQL_USE_MYSQLND + mysqlnd_end_psession(link->conn); +#endif mysql_close(link->conn); signal(SIGPIPE, handler); @@ -775,11 +778,12 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* ensure that the link did not die */ if (mysql_ping(mysql->conn)) { if (mysql_errno(mysql->conn) == 2006) { -#ifndef MYSQL_USE_MYSQLND - if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL) -#else +#ifdef MYSQL_USE_MYSQLND + mysqlnd_end_psession(mysql->conn); if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0, port, socket, client_flags, MySG(mysqlnd_thd_zval_cache) TSRMLS_CC) == NULL) +#else + if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL) #endif { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Link to server lost, unable to reconnect"); |