Skip to content

Commit f4ad6ea

Browse files
committed
Merge branch 'PHP-8.4'
2 parents f7ca813 + 87b4030 commit f4ad6ea

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

ext/intl/msgformat/msgformat_parse.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,11 @@ PHP_FUNCTION( msgfmt_parse_message )
127127
if(spattern && spattern_len) {
128128
efree(spattern);
129129
}
130-
INTL_METHOD_CHECK_STATUS(mfo, "Creating message formatter failed");
130+
INTL_METHOD_CHECK_STATUS_OR_GOTO(mfo, "Creating message formatter failed", clean);
131131

132132
msgfmt_do_parse(mfo, source, src_len, return_value);
133133

134+
clean:
134135
/* drop the temporary formatter */
135136
msgformat_data_free(&mfo->mf_data);
136137
}

ext/intl/tests/gh19261.phpt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
--TEST--
2+
MessageFormatter::parseMessage() with invalid locale
3+
--EXTENSIONS--
4+
intl
5+
--CREDITS--
6+
7+
--FILE--
8+
<?php
9+
10+
$locale = 'root';
11+
$fmt = '{0,whatever} would not work!';
12+
13+
$str = 'failing';
14+
15+
$m = MessageFormatter::parseMessage($locale, $fmt, $str);
16+
var_dump($m);
17+
var_dump(intl_get_error_message());
18+
19+
$m = msgfmt_parse_message($locale, $fmt, $str);
20+
var_dump($m);
21+
var_dump(intl_get_error_message());
22+
23+
?>
24+
--EXPECT--
25+
bool(false)
26+
string(59) "Creating message formatter failed: U_ILLEGAL_ARGUMENT_ERROR"
27+
bool(false)
28+
string(59) "Creating message formatter failed: U_ILLEGAL_ARGUMENT_ERROR"

0 commit comments

Comments
 (0)