From 6d0749a95ba4a18a4c9dcb85c2f1a86f2218f0f0 Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Fri, 3 Nov 2000 02:46:49 +0000 Subject: [PATCH] Fix msql_close(), pg_close() and sybase_close() (Sybase CT) --- NEWS | 3 ++- ext/msql/php_msql.c | 10 +++++++--- ext/mysql/libmysql/mysql_version.h | 1 - ext/pgsql/pgsql.c | 13 ++++++++++--- ext/sybase_ct/php_sybase_ct.c | 12 ++++++++---- 5 files changed, 27 insertions(+), 12 deletions(-) diff --git a/NEWS b/NEWS index 9dde58ada9..4dad366302 100644 --- a/NEWS +++ b/NEWS @@ -2,8 +2,9 @@ PHP 4.0 NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2000, Version 4.0.4 +- Fixed mysql_close(), pg_close(), msql_close() and sybase_close() - they + weren't properly closing the SQL connections (Zeev) - Fixed crypt() to supply random seed if none is given (Andi) -- Fixed mysql_close() - it wasn't properly closing MySQL connections (Zeev) - Made print_r support recursive data structures, e.g., $GLOBALS. (Zeev) - Fixed a bug that caused PHP not to properly flush its output buffer, if more than one output buffer was used. (Zeev) diff --git a/ext/msql/php_msql.c b/ext/msql/php_msql.c index 8b09ab6fc8..90c8ff37ed 100644 --- a/ext/msql/php_msql.c +++ b/ext/msql/php_msql.c @@ -404,12 +404,16 @@ DLEXPORT PHP_FUNCTION(msql_close) ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); - zend_list_delete(Z_RESVAL_P(msql_link)); - if (Z_RESVAL_P(mysql_link)==msql_globals.default_link) { + if (id==-1) { /* explicit resource number */ + zend_list_delete(Z_RESVAL_P(msql_link)); + } + + if (id!=-1 + || (msql_link && Z_RESVAL_P(msql_link)==msql_globals.default_link)) { zend_list_delete(msql_globals.default_link); + msql_globals.default_link = -1; } - zend_list_delete(id); RETURN_TRUE; } /* }}} */ diff --git a/ext/mysql/libmysql/mysql_version.h b/ext/mysql/libmysql/mysql_version.h index 1f868704fe..32ac9f3133 100644 --- a/ext/mysql/libmysql/mysql_version.h +++ b/ext/mysql/libmysql/mysql_version.h @@ -11,7 +11,6 @@ #define FRM_VER 6 #define MYSQL_VERSION_ID 32322 #define MYSQL_PORT 3306 -#define MYSQL_UNIX_ADDR "/tmp/mysql.sock" /* mysqld compile time options */ #ifndef MYSQL_CHARSET diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 69d91bfa07..11722eae0a 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -466,7 +466,7 @@ PHP_FUNCTION(pg_pconnect) PHP_FUNCTION(pg_close) { zval **pgsql_link = NULL; - int id = -1; + int id; PGconn *pgsql; PGLS_FETCH(); @@ -479,6 +479,7 @@ PHP_FUNCTION(pg_close) if (zend_get_parameters_ex(1, &pgsql_link)==FAILURE) { RETURN_FALSE; } + id = -1; break; default: WRONG_PARAM_COUNT; @@ -486,9 +487,15 @@ PHP_FUNCTION(pg_close) } ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL link", le_link, le_plink); - zend_list_delete(Z_RESVAL_PP(pgsql_link)); - if (Z_RESVAL_PP(pgsql_link)==PGG(default_link)) { + + if (id==-1) { /* explicit resource number */ + zend_list_delete(Z_RESVAL_PP(pgsql_link)); + } + + if (id!=-1 + || (pgsql_link && Z_RESVAL_PP(pgsql_link)==PGG(default_link))) { zend_list_delete(PGG(default_link)); + PGG(default_link) = -1; } RETURN_TRUE; diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c index f0c95ba7c5..d93a980457 100644 --- a/ext/sybase_ct/php_sybase_ct.c +++ b/ext/sybase_ct/php_sybase_ct.c @@ -687,10 +687,14 @@ PHP_FUNCTION(sybase_close) ZEND_FETCH_RESOURCE2(sybase_ptr, sybase_link *, &sybase_link_index, id, "Sybase-Link", le_link, le_plink); - if (sybase_link_index) { - zend_list_delete(sybase_link_index->value.lval); - } else { - zend_list_delete(id); + if (id==-1) { /* explicit resource number */ + zend_list_delete(Z_RESVAL_P(sybase_link_index)); + } + + if (id!=-1 + || (sybase_link_index && Z_RESVAL_P(sybase_link_index)==SybCtG(default_link))) { + zend_list_delete(SybCtG(default_link)); + SybCtG(default_link) = -1; } RETURN_TRUE; -- 2.50.1