diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-10 10:38:52 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-10 10:38:52 +0200 |
commit | d50dcbe659e6d5cbe1a7516957431b299e45465c (patch) | |
tree | 4834b1884fe086b242be6a55ccb5880a6300d516 /ext | |
parent | ce5e5b0aa360b001778ff3c8ae21822002fa2c53 (diff) | |
parent | ed1df9d135422bbb44fcd291ad7954358a6f87ed (diff) | |
download | php-git-d50dcbe659e6d5cbe1a7516957431b299e45465c.tar.gz |
Merge branch 'PHP-7.3' into PHP-7.4
Diffstat (limited to 'ext')
-rw-r--r-- | ext/pgsql/pgsql.c | 12 | ||||
-rw-r--r-- | ext/pgsql/tests/close_default_link.phpt | 15 |
2 files changed, 22 insertions, 5 deletions
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 03669de088..ee6c952fec 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -88,7 +88,7 @@ #define PQ_SETNONBLOCKING(pg_link, flag) 0 #endif -#define CHECK_DEFAULT_LINK(x) if ((x) == NULL) { php_error_docref(NULL, E_WARNING, "No PostgreSQL link opened yet"); } +#define CHECK_DEFAULT_LINK(x) if ((x) == NULL) { php_error_docref(NULL, E_WARNING, "No PostgreSQL link opened yet"); RETURN_FALSE; } #define FETCH_DEFAULT_LINK() PGG(default_link) #ifndef HAVE_PQFREEMEM @@ -1566,13 +1566,15 @@ PHP_FUNCTION(pg_close) return; } - if (pgsql_link) { - link = Z_RES_P(pgsql_link); - } else { - link = FETCH_DEFAULT_LINK(); + if (!pgsql_link) { + link = PGG(default_link); CHECK_DEFAULT_LINK(link); + zend_list_delete(link); + PGG(default_link) = NULL; + RETURN_TRUE; } + link = Z_RES_P(pgsql_link); if (zend_fetch_resource2(link, "PostgreSQL link", le_link, le_plink) == NULL) { RETURN_FALSE; } diff --git a/ext/pgsql/tests/close_default_link.phpt b/ext/pgsql/tests/close_default_link.phpt new file mode 100644 index 0000000000..c73aa5460b --- /dev/null +++ b/ext/pgsql/tests/close_default_link.phpt @@ -0,0 +1,15 @@ +--TEST-- +pg_close() default link after connection variable has been dropped +--SKIPIF-- +<?php include("skipif.inc"); ?> +--FILE-- +<?php +include('config.inc'); + +/* Run me under valgrind */ +$db1 = pg_connect($conn_str); +unset($db1); +var_dump(pg_close()); +?> +--EXPECT-- +bool(true) |