From: Zeev Suraski Date: Fri, 3 Nov 2000 02:46:49 +0000 (+0000) Subject: Fix msql_close(), pg_close() and sybase_close() (Sybase CT) X-Git-Tag: php-4.0.4RC3~346 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6d0749a95ba4a18a4c9dcb85c2f1a86f2218f0f0;p=php Fix msql_close(), pg_close() and sybase_close() (Sybase CT) --- 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;