Skip to content

Commit 7eaa9f0

Browse files
committed
Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3: zend_execute: Suppress values in `UnhandledMatchError` for `zend.exception_ignore_args=1` (#17619)
2 parents 29bafa6 + f8b57ff commit 7eaa9f0

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

NEWS

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ PHP NEWS
88
- Core:
99
. Fixed bug GH-17623 (Broken stack overflow detection for variable
1010
compilation). (ilutov)
11+
. Fixed bug GH-17618 (UnhandledMatchError does not take
12+
zend.exception_ignore_args=1 into account). (timwolla)
1113

1214
- DOM:
1315
. Fixed bug GH-17609 (Typo in error message: Dom\NO_DEFAULT_NS instead of

Zend/tests/match/049.phpt

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
--TEST--
2+
Match expression error messages (zend.exception_ignore_args=1)
3+
--INI--
4+
zend.exception_ignore_args=1
5+
--FILE--
6+
<?php
7+
8+
class Beep {}
9+
10+
function test(mixed $var) {
11+
try {
12+
match($var) {};
13+
} catch (UnhandledMatchError $e) {
14+
print $e->getMessage() . PHP_EOL;
15+
}
16+
}
17+
18+
test(null);
19+
test(1);
20+
test(5.5);
21+
test(5.0);
22+
test("foo");
23+
test(true);
24+
test(false);
25+
test([1, 2, 3]);
26+
test(new Beep());
27+
// Testing long strings.
28+
test(str_repeat('e', 100));
29+
test(str_repeat("e\n", 100));
30+
?>
31+
--EXPECT--
32+
Unhandled match case of type null
33+
Unhandled match case of type int
34+
Unhandled match case of type float
35+
Unhandled match case of type float
36+
Unhandled match case of type string
37+
Unhandled match case of type bool
38+
Unhandled match case of type bool
39+
Unhandled match case of type array
40+
Unhandled match case of type Beep
41+
Unhandled match case of type string
42+
Unhandled match case of type string

Zend/zend_execute.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -875,7 +875,10 @@ ZEND_COLD zend_never_inline void zend_magic_get_property_type_inconsistency_erro
875875
ZEND_COLD void zend_match_unhandled_error(const zval *value)
876876
{
877877
smart_str msg = {0};
878-
if (smart_str_append_zval(&msg, value, EG(exception_string_param_max_len)) != SUCCESS) {
878+
if (
879+
EG(exception_ignore_args)
880+
|| smart_str_append_zval(&msg, value, EG(exception_string_param_max_len)) != SUCCESS
881+
) {
879882
smart_str_appendl(&msg, "of type ", sizeof("of type ")-1);
880883
smart_str_appends(&msg, zend_zval_type_name(value));
881884
}

0 commit comments

Comments
 (0)