1
0
mirror of https://github.com/php/php-src.git synced 2026-04-25 08:58:28 +02:00

Promote warnings to errors in explode()

This commit is contained in:
George Peter Banyard
2019-08-22 12:09:55 +02:00
parent 06a4a9ba42
commit 91f4e2e614
3 changed files with 77 additions and 64 deletions
+4 -4
View File
@@ -1129,7 +1129,7 @@ PHPAPI void php_explode_negative_limit(const zend_string *delim, zend_string *st
}
/* }}} */
/* {{{ proto array|false explode(string separator, string str [, int limit])
/* {{{ proto array explode(string separator, string str [, int limit])
Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned. */
PHP_FUNCTION(explode)
{
@@ -1145,14 +1145,14 @@ PHP_FUNCTION(explode)
ZEND_PARSE_PARAMETERS_END();
if (ZSTR_LEN(delim) == 0) {
php_error_docref(NULL, E_WARNING, "Empty delimiter");
RETURN_FALSE;
zend_throw_error(NULL, "Empty delimiter");
return;
}
array_init(return_value);
if (ZSTR_LEN(str) == 0) {
if (limit >= 0) {
if (limit >= 0) {
ZVAL_EMPTY_STRING(&tmp);
zend_hash_index_add_new(Z_ARRVAL_P(return_value), 0, &tmp);
}
+38 -18
View File
@@ -8,21 +8,40 @@ error_reporting=2047
<?php
/* From http://bugs.php.net/19865 */
echo var_export(explode("\1", "a". chr(1). "b". chr(0). "d" . chr(1) . "f" . chr(1). "1" . chr(1) . "d"), TRUE);
echo "\n";
echo md5(var_export(explode("\1", "a". chr(1). "b". chr(0). "d" . chr(1) . "f" . chr(1). "1" . chr(1) . "d"), TRUE));
echo "\n";
var_dump(@explode("", ""));
var_dump(@explode("", NULL));
var_dump(@explode(NULL, ""));
var_dump(@explode("a", ""));
var_dump(@explode("a", "a"));
var_dump(@explode("a", NULL));
var_dump(@explode(NULL, "a"));
var_dump(@explode("abc", "acb"));
var_dump(@explode("somestring", "otherstring"));
var_dump(@explode("somestring", "otherstring", -1));
var_dump(@explode("a", "aaaaaa"));
var_dump(@explode("==", str_repeat("-=".ord(0)."=-", 10)));
var_dump(@explode("=", str_repeat("-=".ord(0)."=-", 10)));
try {
var_dump(explode("", ""));
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
try {
var_dump(explode("", NULL));
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
try {
var_dump(explode(NULL, ""));
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
var_dump(explode("a", ""));
var_dump(explode("a", "a"));
var_dump(explode("a", NULL));
try {
var_dump(explode(NULL, "a"));
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
var_dump(explode("abc", "acb"));
var_dump(explode("somestring", "otherstring"));
var_dump(explode("somestring", "otherstring", -1));
var_dump(explode("a", "aaaaaa"));
var_dump(explode("==", str_repeat("-=".ord(0)."=-", 10)));
var_dump(explode("=", str_repeat("-=".ord(0)."=-", 10)));
//////////////////////////////////////
var_dump(explode(":","a lazy dog:jumps:over:",-1));
var_dump(explode(":","a lazy dog:jumps:over", -1));
@@ -39,10 +58,11 @@ array (
2 => 'f',
3 => '1',
4 => 'd',
)d6bee42a771449205344c0938ad4f035
bool(false)
bool(false)
bool(false)
)
d6bee42a771449205344c0938ad4f035
Empty delimiter
Empty delimiter
Empty delimiter
array(1) {
[0]=>
string(0) ""
@@ -57,7 +77,7 @@ array(1) {
[0]=>
string(0) ""
}
bool(false)
Empty delimiter
array(1) {
[0]=>
string(3) "acb"
+35 -42
View File
@@ -32,12 +32,29 @@ $string = "1234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND";
*/
$counter = 1;
foreach($delimiters as $delimiter) {
echo "-- Iteration $counter --\n";
var_dump( explode($delimiter, $string, -1) );
var_dump( explode($delimiter, $string, 0) );
var_dump( explode($delimiter, $string, 1) );
var_dump( explode($delimiter, $string, 2) );
$counter++;
echo "-- Iteration $counter --\n";
try {
var_dump( explode($delimiter, $string, -1) );
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
try {
var_dump( explode($delimiter, $string, 0) );
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
try {
var_dump( explode($delimiter, $string, 1) );
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
try {
var_dump( explode($delimiter, $string, 2) );
} catch (\Error $e) {
echo $e->getMessage() . "\n";
}
$counter++;
}
echo "\n*** Testing explode() with miscelleneous input arguments ***\n";
@@ -82,31 +99,15 @@ echo "Done\n";
--EXPECTF--
*** Testing explode() for basic operations ***
-- Iteration 1 --
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Empty delimiter
Empty delimiter
Empty delimiter
Empty delimiter
-- Iteration 2 --
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Empty delimiter
Empty delimiter
Empty delimiter
Empty delimiter
-- Iteration 3 --
array(1) {
[0]=>
@@ -208,18 +209,10 @@ array(2) {
string(56) "234NULL23abcd00000TRUEFALSE-11.234444true-11.24%PHP%ZEND"
}
-- Iteration 7 --
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Warning: explode(): Empty delimiter in %s on line %d
bool(false)
Empty delimiter
Empty delimiter
Empty delimiter
Empty delimiter
-- Iteration 8 --
array(2) {
[0]=>