Skip to content

Commit affffe1

Browse files
committed
Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3: Fix reference support for intltz_get_offset()
2 parents 685baf7 + bf4b470 commit affffe1

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ PHP NEWS
2424
. Fixed GH-18243 imagettftext() overflow/underflow on font size value.
2525
(David Carlier)
2626

27+
- Intl:
28+
. Fix reference support for intltz_get_offset(). (nielsdos)
29+
2730
- LDAP:
2831
. Fixed bug GH-17776 (LDAP_OPT_X_TLS_* options can't be overridden). (Remi)
2932
. Fix NULL deref on high modification key. (nielsdos)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
--TEST--
2+
intltz_get_offset references
3+
--EXTENSIONS--
4+
intl
5+
--FILE--
6+
<?php
7+
$tz = IntlTimeZone::createTimeZone('Europe/Brussels');
8+
9+
class Test {
10+
public string $a, $b;
11+
}
12+
$test = new Test;
13+
$test->a = $test->b = "hello";
14+
15+
$rawOffset =& $test->a;
16+
$dstOffset =& $test->b;
17+
intltz_get_offset($tz, 0.0, true, $rawOffset, $dstOffset);
18+
var_dump($test);
19+
?>
20+
--EXPECT--
21+
object(Test)#2 (2) {
22+
["a"]=>
23+
&string(7) "3600000"
24+
["b"]=>
25+
&string(1) "0"
26+
}

ext/intl/timezone/timezone_methods.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ U_CFUNC PHP_FUNCTION(intltz_get_offset)
440440
TIMEZONE_METHOD_INIT_VARS;
441441

442442
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(),
443-
"Odbz/z/", &object, TimeZone_ce_ptr, &date, &local, &rawOffsetArg,
443+
"Odbzz", &object, TimeZone_ce_ptr, &date, &local, &rawOffsetArg,
444444
&dstOffsetArg) == FAILURE) {
445445
RETURN_THROWS();
446446
}
@@ -452,10 +452,8 @@ U_CFUNC PHP_FUNCTION(intltz_get_offset)
452452

453453
INTL_METHOD_CHECK_STATUS(to, "error obtaining offset");
454454

455-
zval_ptr_dtor(rawOffsetArg);
456-
ZVAL_LONG(rawOffsetArg, rawOffset);
457-
zval_ptr_dtor(dstOffsetArg);
458-
ZVAL_LONG(dstOffsetArg, dstOffset);
455+
ZEND_TRY_ASSIGN_REF_LONG(rawOffsetArg, rawOffset);
456+
ZEND_TRY_ASSIGN_REF_LONG(dstOffsetArg, dstOffset);
459457

460458
RETURN_TRUE;
461459
}

0 commit comments

Comments
 (0)