]> granicus.if.org Git - php/commitdiff
More accurate mysql_close()
authorDmitry Stogov <dmitry@zend.com>
Tue, 20 May 2014 09:19:21 +0000 (13:19 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 20 May 2014 09:19:21 +0000 (13:19 +0400)
ext/ldap/tests/README
ext/mysql/php_mysql.c

index 7dccd270f3aef320810d07f48838dffd6d80f655..b30043abcecf864e92b0195765525809551ffbbf 100644 (file)
@@ -10,7 +10,7 @@ Notes:
     It is used for testing ldap_start_tls(), which also requires "TLS_REQCERT never" in client configuration
 2.  An empty LDAP structure is required for the tests to be PASSed
 
-(/etc/openldap/)slapd.conf:
+       (/etc/openldap/)slapd.conf:
 -----------------------------------------------------------
 TLSCACertificateFile /etc/openldap/ssl/server.pem
 TLSCertificateFile /etc/openldap/ssl/server.pem
index 94bfb6cfd29c972b7892177d9bc4f0a81f095da7..580296a3cf48c39202363bbe6fb58d10c6676ff1 100644 (file)
@@ -1125,15 +1125,15 @@ PHP_FUNCTION(mysql_close)
                        mysqlnd_end_psession(mysql->conn);
                }
 #endif
-               if (!mysql_link) {
-                       --GC_REFCOUNT(res);
+               if (res == MySG(default_link)) {
+                       zend_list_delete(res);
                        MySG(default_link) = NULL;
-               } else if (mysql_link && Z_RES_P(mysql_link) == MySG(default_link)) {
-                       --GC_REFCOUNT(res);
-                       MySG(default_link) = NULL;
-                       zend_list_close(res);
-               } else {
-                       zend_list_close(res);
+               }
+               if (mysql_link) {
+                       /* we have at least 3 additional references to this resource ??? */
+                       if (GC_REFCOUNT(res) <= 3) {
+                               zend_list_close(res);
+                       }
                }
        }