diff --git a/NEWS b/NEWS index 2e2bc04e5b4..1970cdfc567 100644 --- a/NEWS +++ b/NEWS @@ -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) - DOM: . Fixed bug GH-17609 (Typo in error message: Dom\NO_DEFAULT_NS instead of diff --git a/Zend/tests/match/049.phpt b/Zend/tests/match/049.phpt new file mode 100644 index 00000000000..2a2385f704f --- /dev/null +++ b/Zend/tests/match/049.phpt @@ -0,0 +1,42 @@ +--TEST-- +Match expression error messages (zend.exception_ignore_args=1) +--INI-- +zend.exception_ignore_args=1 +--FILE-- +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 diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index e425e6625e4..8b148c40a49 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -875,7 +875,10 @@ ZEND_COLD zend_never_inline void zend_magic_get_property_type_inconsistency_erro ZEND_COLD void zend_match_unhandled_error(const zval *value) { smart_str msg = {0}; - if (smart_str_append_zval(&msg, value, EG(exception_string_param_max_len)) != SUCCESS) { + if ( + EG(exception_ignore_args) + || smart_str_append_zval(&msg, value, EG(exception_string_param_max_len)) != SUCCESS + ) { smart_str_appendl(&msg, "of type ", sizeof("of type ")-1); smart_str_appends(&msg, zend_zval_type_name(value)); }