1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

zend_execute: Suppress values in UnhandledMatchError for zend.exception_ignore_args=1 (#17619)

Fixes php/php-src#17618.
This commit is contained in:
Tim Düsterhus
2025-01-31 10:19:49 +01:00
committed by GitHub
parent 62bbfdebaa
commit f8b57ff1bf
3 changed files with 45 additions and 1 deletions

2
NEWS
View File

@@ -8,6 +8,8 @@ PHP NEWS
- Core:
. Fixed bug GH-17623 (Broken stack overflow detection for variable
compilation). (ilutov)
. Fixed bug GH-17618 (UnhandledMatchError does not take
zend.exception_ignore_args=1 into account). (timwolla)
- PHPDBG:
. Partially fixed bug GH-17387 (Trivial crash in phpdbg lexer). (nielsdos)

42
Zend/tests/match/049.phpt Normal file
View File

@@ -0,0 +1,42 @@
--TEST--
Match expression error messages (zend.exception_ignore_args=1)
--INI--
zend.exception_ignore_args=1
--FILE--
<?php
class Beep {}
function test(mixed $var) {
try {
match($var) {};
} catch (UnhandledMatchError $e) {
print $e->getMessage() . PHP_EOL;
}
}
test(null);
test(1);
test(5.5);
test(5.0);
test("foo");
test(true);
test(false);
test([1, 2, 3]);
test(new Beep());
// Testing long strings.
test(str_repeat('e', 100));
test(str_repeat("e\n", 100));
?>
--EXPECT--
Unhandled match case of type null
Unhandled match case of type int
Unhandled match case of type float
Unhandled match case of type float
Unhandled match case of type string
Unhandled match case of type bool
Unhandled match case of type bool
Unhandled match case of type array
Unhandled match case of type Beep
Unhandled match case of type string
Unhandled match case of type string

View File

@@ -872,7 +872,7 @@ ZEND_COLD void zend_match_unhandled_error(const zval *value)
{
smart_str msg = {0};
if (Z_TYPE_P(value) <= IS_STRING) {
if (!EG(exception_ignore_args) && Z_TYPE_P(value) <= IS_STRING) {
smart_str_append_scalar(&msg, value, EG(exception_string_param_max_len));
} else {
smart_str_appendl(&msg, "of type ", sizeof("of type ")-1);