Merge branch 'PHP-8.2' into PHP-8.3

* PHP-8.2:
  Fix SoapFault property destruction
This commit is contained in:
Niels Dossche 2024-08-05 22:03:21 +02:00
commit e681d933d4
No known key found for this signature in database
GPG Key ID: B8A8AD166DF0E2E5
3 changed files with 21 additions and 3 deletions

1
NEWS
View File

@ -45,6 +45,7 @@ PHP NEWS
- Soap:
. Fixed bug #55639 (Digest autentication dont work). (nielsdos)
. Fix SoapFault property destruction. (nielsdos)
- Standard:
. Fix passing non-finite timeout values in stream functions. (nielsdos)

View File

@ -529,6 +529,13 @@ static void soap_fault_dtor_properties(zval *obj)
zval_ptr_dtor(Z_FAULT_DETAIL_P(obj));
zval_ptr_dtor(Z_FAULT_NAME_P(obj));
zval_ptr_dtor(Z_FAULT_HEADERFAULT_P(obj));
ZVAL_EMPTY_STRING(Z_FAULT_STRING_P(obj));
ZVAL_NULL(Z_FAULT_CODE_P(obj));
ZVAL_NULL(Z_FAULT_CODENS_P(obj));
ZVAL_NULL(Z_FAULT_ACTOR_P(obj));
ZVAL_NULL(Z_FAULT_DETAIL_P(obj));
ZVAL_NULL(Z_FAULT_NAME_P(obj));
ZVAL_NULL(Z_FAULT_HEADERFAULT_P(obj));
}
/* {{{ SoapFault constructor */
@ -550,9 +557,6 @@ PHP_METHOD(SoapFault, __construct)
Z_PARAM_ZVAL_OR_NULL(headerfault)
ZEND_PARSE_PARAMETERS_END();
/* Delete previously set properties */
soap_fault_dtor_properties(ZEND_THIS);
if (code_str) {
fault_code = ZSTR_VAL(code_str);
fault_code_len = ZSTR_LEN(code_str);
@ -571,6 +575,9 @@ PHP_METHOD(SoapFault, __construct)
RETURN_THROWS();
}
/* Delete previously set properties */
soap_fault_dtor_properties(ZEND_THIS);
if (name != NULL && name_len == 0) {
name = NULL;
}

View File

@ -6,7 +6,17 @@ soap
<?php
$sf = new SoapFault(null, "x");
$sf->__construct(null, "x");
try {
$sf->__construct("", "");
} catch (ValueError) {}
$sf->__construct(null, "x", headerFault: []);
var_dump($sf->headerfault);
$sf->__construct(null, "x");
var_dump($sf->headerfault);
?>
DONE
--EXPECT--
array(0) {
}
NULL
DONE