From 4c171ed5eb0e379ebf4b1d5ab3af60e6c5327e23 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 4 Nov 2021 16:23:55 +0100 Subject: [PATCH] Fix bug #81591: ignore_repeated_errors broken We should suppress the error if the message is the same, not if it's different. Apparently we had no test coverage for these options. --- NEWS | 2 ++ Zend/tests/ignore_repeated_errors.phpt | 25 +++++++++++++++++++++++++ Zend/tests/ignore_repeated_source.phpt | 24 ++++++++++++++++++++++++ main/main.c | 2 +- 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/ignore_repeated_errors.phpt create mode 100644 Zend/tests/ignore_repeated_source.phpt diff --git a/NEWS b/NEWS index 098f2f07ec7..487bd6185e5 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ PHP NEWS - Core: . Fixed bug #81582 (Stringable not implicitly declared if __toString() came from a trait). (Nikita) + . Fixed bug #81591 (Fatal Error not properly logged in particular cases). + (Nikita) - GD: . Fixed bug #71316 (libpng warning from imagecreatefromstring). (cmb) diff --git a/Zend/tests/ignore_repeated_errors.phpt b/Zend/tests/ignore_repeated_errors.phpt new file mode 100644 index 00000000000..b7744e16e97 --- /dev/null +++ b/Zend/tests/ignore_repeated_errors.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test ignore_repeated_errors ini setting +--INI-- +ignore_repeated_errors=1 +--FILE-- + +--EXPECTF-- +Warning: Undefined variable $u1 in %s on line %d + +Warning: Undefined variable $u2 in %s on line %d + +Warning: Undefined variable $u in %s on line %d + +Warning: Undefined variable $u in %s on line %d diff --git a/Zend/tests/ignore_repeated_source.phpt b/Zend/tests/ignore_repeated_source.phpt new file mode 100644 index 00000000000..23389474aee --- /dev/null +++ b/Zend/tests/ignore_repeated_source.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test ignore_repeated_source ini setting +--INI-- +ignore_repeated_errors=1 +ignore_repeated_source=1 +--FILE-- + +--EXPECTF-- +Warning: Undefined variable $u1 in %s on line %d + +Warning: Undefined variable $u2 in %s on line %d + +Warning: Undefined variable $u in %s on line %d diff --git a/main/main.c b/main/main.c index 353f278bc6e..073d260ac68 100644 --- a/main/main.c +++ b/main/main.c @@ -1216,7 +1216,7 @@ static ZEND_COLD void php_error_cb(int orig_type, const char *error_filename, co if (PG(ignore_repeated_errors) && PG(last_error_message)) { /* no check for PG(last_error_file) is needed since it cannot * be NULL if PG(last_error_message) is not NULL */ - if (zend_string_equals(PG(last_error_message), message) + if (!zend_string_equals(PG(last_error_message), message) || (!PG(ignore_repeated_source) && ((PG(last_error_lineno) != (int)error_lineno) || strcmp(PG(last_error_file), error_filename)))) {