From 0240b903c58211993ee11fdf137d809d6d75436d Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Thu, 22 Aug 2019 11:48:21 +0200 Subject: [PATCH] Promote warnings to errors in substr_compare() --- ext/standard/string.c | 4 ++-- ext/standard/tests/strings/bug33605.phpt | 10 ++++++---- ext/standard/tests/strings/substr_compare.phpt | 11 +++++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ext/standard/string.c b/ext/standard/string.c index e9a584aa29..6a1da25d31 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -6107,8 +6107,8 @@ PHP_FUNCTION(substr_compare) if (len == 0) { RETURN_LONG(0L); } else { - php_error_docref(NULL, E_WARNING, "The length must be greater than or equal to zero"); - RETURN_FALSE; + zend_throw_error(NULL, "The length must be greater than or equal to zero"); + return; } } diff --git a/ext/standard/tests/strings/bug33605.phpt b/ext/standard/tests/strings/bug33605.phpt index 7ba38f94f5..b3cb2ece95 100644 --- a/ext/standard/tests/strings/bug33605.phpt +++ b/ext/standard/tests/strings/bug33605.phpt @@ -2,10 +2,12 @@ Bug #33605 (substr_compare crashes) --FILE-- getMessage(); +} ?> --EXPECTF-- -Warning: substr_compare(): The length must be greater than or equal to zero in %s on line %d -bool(false) +The length must be greater than or equal to zero diff --git a/ext/standard/tests/strings/substr_compare.phpt b/ext/standard/tests/strings/substr_compare.phpt index 9d4bac4ba9..b0a8a5b0eb 100644 --- a/ext/standard/tests/strings/substr_compare.phpt +++ b/ext/standard/tests/strings/substr_compare.phpt @@ -13,7 +13,12 @@ var_dump(substr_compare("abcde", "abc", 5, 1)); var_dump(substr_compare("abcde", "abcdef", -10, 10) < 0); var_dump(substr_compare("abcde", "abc", 0, 0)); echo "Test\n"; -var_dump(substr_compare("abcde", "abc", 0, -1)); + +try { + substr_compare("abcde", "abc", 0, -1); +} catch (\Error $e) { + echo $e->getMessage() . "\n"; +} var_dump(substr_compare("abcde", "abc", -1, NULL, -5) > 0); echo "Done\n"; @@ -29,8 +34,6 @@ int(-1) bool(true) int(0) Test - -Warning: substr_compare(): The length must be greater than or equal to zero in %s on line %d -bool(false) +The length must be greater than or equal to zero bool(true) Done -- 2.40.0