Merge branch 'PHP-8.4'

* PHP-8.4:
  Fix reference support for intltz_get_offset()
This commit is contained in:
Niels Dossche 2025-04-20 14:24:02 +02:00
commit eeaa60f6fa
No known key found for this signature in database
GPG key ID: B8A8AD166DF0E2E5
2 changed files with 29 additions and 5 deletions

View file

@ -0,0 +1,26 @@
--TEST--
intltz_get_offset references
--EXTENSIONS--
intl
--FILE--
<?php
$tz = IntlTimeZone::createTimeZone('Europe/Brussels');
class Test {
public string $a, $b;
}
$test = new Test;
$test->a = $test->b = "hello";
$rawOffset =& $test->a;
$dstOffset =& $test->b;
intltz_get_offset($tz, 0.0, true, $rawOffset, $dstOffset);
var_dump($test);
?>
--EXPECT--
object(Test)#2 (2) {
["a"]=>
&string(7) "3600000"
["b"]=>
&string(1) "0"
}

View file

@ -440,7 +440,7 @@ U_CFUNC PHP_FUNCTION(intltz_get_offset)
TIMEZONE_METHOD_INIT_VARS; TIMEZONE_METHOD_INIT_VARS;
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(),
"Odbz/z/", &object, TimeZone_ce_ptr, &date, &local, &rawOffsetArg, "Odbzz", &object, TimeZone_ce_ptr, &date, &local, &rawOffsetArg,
&dstOffsetArg) == FAILURE) { &dstOffsetArg) == FAILURE) {
RETURN_THROWS(); RETURN_THROWS();
} }
@ -452,10 +452,8 @@ U_CFUNC PHP_FUNCTION(intltz_get_offset)
INTL_METHOD_CHECK_STATUS(to, "error obtaining offset"); INTL_METHOD_CHECK_STATUS(to, "error obtaining offset");
zval_ptr_dtor(rawOffsetArg); ZEND_TRY_ASSIGN_REF_LONG(rawOffsetArg, rawOffset);
ZVAL_LONG(rawOffsetArg, rawOffset); ZEND_TRY_ASSIGN_REF_LONG(dstOffsetArg, dstOffset);
zval_ptr_dtor(dstOffsetArg);
ZVAL_LONG(dstOffsetArg, dstOffset);
RETURN_TRUE; RETURN_TRUE;
} }