Skip to content

Commit c80e450

Browse files
committed
Merge branch 'PHP-8.4'
2 parents 6c18970 + 3bb3db5 commit c80e450

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
@@ -738,13 +738,13 @@ PHP_METHOD(UConverter, transcode) {
738738
zval *tmpzval;
739739

740740
if (U_SUCCESS(error) &&
741-
(tmpzval = zend_hash_str_find(Z_ARRVAL_P(options), "from_subst", sizeof("from_subst") - 1)) != NULL &&
741+
(tmpzval = zend_hash_str_find_deref(Z_ARRVAL_P(options), "from_subst", sizeof("from_subst") - 1)) != NULL &&
742742
Z_TYPE_P(tmpzval) == IS_STRING) {
743743
error = U_ZERO_ERROR;
744744
ucnv_setSubstChars(src_cnv, Z_STRVAL_P(tmpzval), Z_STRLEN_P(tmpzval) & 0x7F, &error);
745745
}
746746
if (U_SUCCESS(error) &&
747-
(tmpzval = zend_hash_str_find(Z_ARRVAL_P(options), "to_subst", sizeof("to_subst") - 1)) != NULL &&
747+
(tmpzval = zend_hash_str_find_deref(Z_ARRVAL_P(options), "to_subst", sizeof("to_subst") - 1)) != NULL &&
748748
Z_TYPE_P(tmpzval) == IS_STRING) {
749749
error = U_ZERO_ERROR;
750750
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)