Skip to content

Commit 3bb3db5

Browse files
committed
Merge branch 'PHP-8.3' into PHP-8.4
2 parents 9464082 + 005c7b5 commit 3bb3db5

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

ext/intl/converter/converter.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -754,13 +754,13 @@ PHP_METHOD(UConverter, transcode) {
754754
zval *tmpzval;
755755

756756
if (U_SUCCESS(error) &&
757-
(tmpzval = zend_hash_str_find(Z_ARRVAL_P(options), "from_subst", sizeof("from_subst") - 1)) != NULL &&
757+
(tmpzval = zend_hash_str_find_deref(Z_ARRVAL_P(options), "from_subst", sizeof("from_subst") - 1)) != NULL &&
758758
Z_TYPE_P(tmpzval) == IS_STRING) {
759759
error = U_ZERO_ERROR;
760760
ucnv_setSubstChars(src_cnv, Z_STRVAL_P(tmpzval), Z_STRLEN_P(tmpzval) & 0x7F, &error);
761761
}
762762
if (U_SUCCESS(error) &&
763-
(tmpzval = zend_hash_str_find(Z_ARRVAL_P(options), "to_subst", sizeof("to_subst") - 1)) != NULL &&
763+
(tmpzval = zend_hash_str_find_deref(Z_ARRVAL_P(options), "to_subst", sizeof("to_subst") - 1)) != NULL &&
764764
Z_TYPE_P(tmpzval) == IS_STRING) {
765765
error = U_ZERO_ERROR;
766766
ucnv_setSubstChars(dest_cnv, Z_STRVAL_P(tmpzval), Z_STRLEN_P(tmpzval) & 0x7F, &error);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
--TEST--
2+
UConverter::transcode issue with substitutes values as references
3+
--EXTENSIONS--
4+
intl
5+
--FILE--
6+
<?php
7+
$subst = '??';
8+
$opts = array('from_subst' => '?', 'to_subst' => &$subst);
9+
var_dump(UConverter::transcode("This is an ascii string", 'ascii', 'utf-8', $opts));
10+
$opts = array('from_subst' => &$subst, 'to_subst' => '?');
11+
var_dump(UConverter::transcode("This is an ascii string", 'ascii', 'utf-8', $opts));
12+
// should yield the same results
13+
$opts = array('from_subst' => '?', 'to_subst' => '??');
14+
var_dump(UConverter::transcode("This is an ascii string", 'ascii', 'utf-8', $opts));
15+
$opts = array('from_subst' => '??', 'to_subst' => '?');
16+
var_dump(UConverter::transcode("This is an ascii string", 'ascii', 'utf-8', $opts));
17+
?>
18+
--EXPECT--
19+
bool(false)
20+
string(23) "This is an ascii string"
21+
bool(false)
22+
string(23) "This is an ascii string"

0 commit comments

Comments
 (0)