Commit 087a5e73f43 for php

commit 087a5e73f4387a96be5d12d4ec4ee0fcd395c172
Merge: 268ebcbead3 7302ff4f529
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date:   Tue Nov 10 08:37:48 2026 -0500

    Merge branch 'PHP-8.4' into PHP-8.5

    * PHP-8.4:
      ext/dba: Fix dba_close() not closing a dba_popen() connection

diff --cc NEWS
index 1f5d866be56,0896086c19e..c246c61d67e
--- a/NEWS
+++ b/NEWS
@@@ -25,6 -25,14 +25,10 @@@ PH
  - Curl:
    . Fixed curl_reset() retaining CURLOPT_PRIVATE after reset. (lacatoire)

+ - DBA:
+   . Fixed dba_close() not closing a database opened with dba_popen().
+     (Ilia Alshanetsky)
+
 -- DOM:
 -  . Fixed bug GH-25268 (NULL php_libxml_ref_obj dereference in
 -    dom_objects_store_clone_obj when cloning Dom\Notation). (David Carlier)
 -
  - MBString:
    . Fixed stack overflow in mb_check_encoding() and mb_convert_encoding() with
      deeply nested arrays. (Eyüp Can Akman)
diff --cc ext/dba/dba.c
index 60685474212,b64fdc2ce40..ca8f961f068
--- a/ext/dba/dba.c
+++ b/ext/dba/dba.c
@@@ -587,12 -620,13 +617,13 @@@ static void php_dba_open(INTERNAL_FUNCT
  		zend_resource *le;

  		/* try to find if we already have this link in our persistent list */
 -		if ((le = zend_hash_str_find_ptr(&EG(persistent_list), resource_key, resource_key_len)) != NULL) {
 +		if ((le = zend_hash_find_ptr(&EG(persistent_list), resource_key)) != NULL) {
  			if (le->type != le_pdb) {
  				// TODO This should never happen
 -				efree(resource_key);
 +				zend_string_release_ex(resource_key, /* persistent */ false);
  				RETURN_FALSE;
  			}
+ 			GC_ADDREF(le);

  			object_init_ex(return_value, dba_connection_ce);
  			dba_connection *connection = Z_DBA_CONNECTION_P(return_value);
@@@ -944,9 -982,10 +975,10 @@@ restart
  	connection->info->hnd = hptr;

  	if (persistent) {
- 		if (zend_register_persistent_resource_ex(connection->hash, connection->info, le_pdb) == NULL) {
 -		zend_resource *le = zend_register_persistent_resource(resource_key, resource_key_len, connection->info, le_pdb);
++		zend_resource *le = zend_register_persistent_resource_ex(connection->hash, connection->info, le_pdb);
+ 		if (le == NULL) {
  			php_error_docref(NULL, E_WARNING, "Could not register persistent resource");
 -			efree(resource_key);
 +			zend_string_release_ex(resource_key, /* persistent */ false);
  			dba_close_connection(connection);
  			zval_ptr_dtor(return_value);
  			RETURN_FALSE;