summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-03-25 16:41:21 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-03-25 16:41:21 +0100
commit85095dfd0956bc09f5157211948c40cfa2859d27 (patch)
tree6e55ec0ec15bd463dd477c84c59d7f605edf1a8b
parentb8b880932e95ff1e575a04a6988bc0cf00b89842 (diff)
downloadphp-git-85095dfd0956bc09f5157211948c40cfa2859d27.tar.gz
Fixed bug #72175
Make sure we don't close the connection we're trying to reuse...
-rw-r--r--NEWS4
-rw-r--r--ext/interbase/interbase.c14
2 files changed, 12 insertions, 6 deletions
diff --git a/NEWS b/NEWS
index d2e5043518..8165400d84 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,10 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2019, PHP 7.2.18
+- interbase:
+ . Fixed bug #72175 (Impossibility of creating multiple connections to
+ Interbase with php 7.x). (Nikita)
+
- phpdbg:
. Fixed bug #76801 (too many open files). (alekitto)
diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c
index 5cdf25b080..6f28b3f4a5 100644
--- a/ext/interbase/interbase.c
+++ b/ext/interbase/interbase.c
@@ -939,13 +939,15 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /*
xlink = (zend_resource*) le->ptr;
if ((!persistent && xlink->type == le_link) || xlink->type == le_plink) {
- if (IBG(default_link)) {
- zend_list_close(IBG(default_link));
+ if (IBG(default_link) != xlink) {
+ GC_REFCOUNT(xlink)++;
+ if (IBG(default_link)) {
+ zend_list_delete(IBG(default_link));
+ }
+ IBG(default_link) = xlink;
}
- xlink->gc.refcount++;
- xlink->gc.refcount++;
- IBG(default_link) = xlink;
- RETVAL_RES(xlink);
+ GC_REFCOUNT(xlink)++;
+ RETURN_RES(xlink);
} else {
zend_hash_str_del(&EG(regular_list), hash, sizeof(hash)-1);
}