From: Brian Shire Date: Sat, 27 Dec 2008 05:13:30 +0000 (+0000) Subject: fix explode behavior to respect negative limit when string is empty. X-Git-Tag: php-5.4.0alpha1~191^2~4739 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6a1c7a6743ced3e8cbacfabf7d436f528c50cad;p=php fix explode behavior to respect negative limit when string is empty. --- diff --git a/ext/standard/string.c b/ext/standard/string.c index 1f60a0324f..ce9f7c2a24 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1294,10 +1294,12 @@ PHP_FUNCTION(explode) array_init(return_value); if ( str_len == 0 ) { - if ( str_type == IS_UNICODE ) { - add_next_index_unicodel(return_value, USTR_MAKE(""), sizeof("")-1, 0); - } else { - add_next_index_stringl(return_value, "", sizeof("")-1, 1); + if (limit >= 0 || argc == 2) { + if ( str_type == IS_UNICODE ) { + add_next_index_unicodel(return_value, USTR_MAKE(""), sizeof("")-1, 0); + } else { + add_next_index_stringl(return_value, "", sizeof("")-1, 1); + } } return; } diff --git a/ext/standard/tests/strings/explode.phpt b/ext/standard/tests/strings/explode.phpt index 44f5846f05..2ed242a247 100644 --- a/ext/standard/tests/strings/explode.phpt +++ b/ext/standard/tests/strings/explode.phpt @@ -18,6 +18,7 @@ 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))); @@ -64,6 +65,8 @@ array(1) { [0]=> unicode(11) "otherstring" } +array(0) { +} array(7) { [0]=> unicode(0) ""