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 f13dfa585ef..7de295fe84f 100644 --- a/main/main.c +++ b/main/main.c @@ -1212,7 +1212,7 @@ static ZEND_COLD void php_error_cb(int orig_type, zend_string *error_filename, c 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) || !zend_string_equals(PG(last_error_file), error_filename)))) {