summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-11-03 02:46:49 +0000
committerZeev Suraski <zeev@php.net>2000-11-03 02:46:49 +0000
commit6d0749a95ba4a18a4c9dcb85c2f1a86f2218f0f0 (patch)
treede589bcfd8ab67e9e5f1fd7ebf57fa3cb17fa8ac
parent313a459af3a029e95b5988ba9de998de3dff3859 (diff)
downloadphp-git-6d0749a95ba4a18a4c9dcb85c2f1a86f2218f0f0.tar.gz
Fix msql_close(), pg_close() and sybase_close() (Sybase CT)
-rw-r--r--NEWS3
-rw-r--r--ext/msql/php_msql.c10
-rw-r--r--ext/mysql/libmysql/mysql_version.h1
-rw-r--r--ext/pgsql/pgsql.c13
-rw-r--r--ext/sybase_ct/php_sybase_ct.c12
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;