diff --git a/ext/standard/string.c b/ext/standard/string.c index c2f29baec7732..bc1d3feade1e4 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -5610,8 +5610,8 @@ PHP_FUNCTION(substr_count) ZEND_PARSE_PARAMETERS_END(); if (needle_len == 0) { - php_error_docref(NULL, E_WARNING, "Empty substring"); - RETURN_FALSE; + zend_throw_error(NULL, "Empty substring"); + return; } p = haystack; @@ -5632,6 +5632,7 @@ PHP_FUNCTION(substr_count) length += (haystack_len - offset); } if (length < 0 || ((size_t)length > (haystack_len - offset))) { + /* TODO Check if Candidate to convert to Exception */ php_error_docref(NULL, E_WARNING, "Invalid length value"); RETURN_FALSE; } diff --git a/ext/standard/tests/strings/substr_count_basic.phpt b/ext/standard/tests/strings/substr_count_basic.phpt index 4023a774d8e74..385689e697050 100644 --- a/ext/standard/tests/strings/substr_count_basic.phpt +++ b/ext/standard/tests/strings/substr_count_basic.phpt @@ -4,17 +4,25 @@ Test substr_count() function (basic) getMessage() . "\n"; +} +try { + substr_count("a", ""); +} catch (\Error $e) { + echo $e->getMessage() . "\n"; +} +var_dump(substr_count("", "a")); +var_dump(substr_count("", "a")); +var_dump(substr_count("", chr(0))); $a = str_repeat("abcacba", 100); -var_dump(@substr_count($a, "bca")); +var_dump(substr_count($a, "bca")); $a = str_repeat("abcacbabca", 100); -var_dump(@substr_count($a, "bca")); +var_dump(substr_count($a, "bca")); var_dump(substr_count($a, "bca", 200)); var_dump(substr_count($a, "bca", 200, 50)); var_dump(substr_count($a, "bca", -200)); @@ -26,8 +34,8 @@ echo "Done\n"; ?> --EXPECT-- ***Testing basic operations *** -bool(false) -bool(false) +Empty substring +Empty substring int(0) int(0) int(0)