summaryrefslogtreecommitdiff
path: root/ext/pgsql/pgsql.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pgsql/pgsql.c')
-rw-r--r--ext/pgsql/pgsql.c13
1 files changed, 10 insertions, 3 deletions
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;