diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-03-25 16:41:21 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-03-25 16:41:21 +0100 |
commit | 85095dfd0956bc09f5157211948c40cfa2859d27 (patch) | |
tree | 6e55ec0ec15bd463dd477c84c59d7f605edf1a8b | |
parent | b8b880932e95ff1e575a04a6988bc0cf00b89842 (diff) | |
download | php-git-85095dfd0956bc09f5157211948c40cfa2859d27.tar.gz |
Fixed bug #72175
Make sure we don't close the connection we're trying to reuse...
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/interbase/interbase.c | 14 |
2 files changed, 12 insertions, 6 deletions
@@ -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); } |