mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Merge branch 'PHP-7.2'
* PHP-7.2: Bugfix#75419 Fix clearing of default link during pg_close()
This commit is contained in:
commit
55ac4f0929
@ -1572,32 +1572,26 @@ PHP_FUNCTION(pg_close)
|
||||
{
|
||||
zval *pgsql_link = NULL;
|
||||
zend_resource *link;
|
||||
int argc = ZEND_NUM_ARGS();
|
||||
PGconn *pgsql;
|
||||
|
||||
if (zend_parse_parameters(argc, "|r", &pgsql_link) == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|r", &pgsql_link) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (argc == 0) {
|
||||
if (pgsql_link) {
|
||||
link = Z_RES_P(pgsql_link);
|
||||
} else {
|
||||
link = FETCH_DEFAULT_LINK();
|
||||
CHECK_DEFAULT_LINK(link);
|
||||
} else {
|
||||
link = Z_RES_P(pgsql_link);
|
||||
}
|
||||
|
||||
if ((pgsql = (PGconn *)zend_fetch_resource2(link, "PostgreSQL link", le_link, le_plink)) == NULL) {
|
||||
if (zend_fetch_resource2(link, "PostgreSQL link", le_link, le_plink) == NULL) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (argc == 0) { /* explicit resource number */
|
||||
zend_list_close(link);
|
||||
}
|
||||
|
||||
if (argc || (pgsql_link && Z_RES_P(pgsql_link) == PGG(default_link))) {
|
||||
zend_list_close(link);
|
||||
if (link == PGG(default_link)) {
|
||||
PGG(default_link) = NULL;
|
||||
}
|
||||
zend_list_close(link);
|
||||
|
||||
RETURN_TRUE;
|
||||
}
|
||||
|
14
ext/pgsql/tests/bug75419.phpt
Normal file
14
ext/pgsql/tests/bug75419.phpt
Normal file
@ -0,0 +1,14 @@
|
||||
--TEST--
|
||||
Bug #75419 Default link leaked via pg_close()
|
||||
--SKIPIF--
|
||||
<?php include("skipif.inc"); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
include('config.inc');
|
||||
|
||||
$db1 = pg_connect($conn_str, PGSQL_CONNECT_FORCE_NEW);
|
||||
$db2 = pg_connect($conn_str, PGSQL_CONNECT_FORCE_NEW);
|
||||
pg_close($db1);
|
||||
var_dump(pg_ping());
|
||||
--EXPECT--
|
||||
bool(true)
|
Loading…
Reference in New Issue
Block a user