]> granicus.if.org Git - php/commitdiff
MFH: Fixed bug #47546 (Default value for limit parameter in explode is 0, not -1)
authorKalle Sommer Nielsen <kalle@php.net>
Tue, 3 Mar 2009 11:50:32 +0000 (11:50 +0000)
committerKalle Sommer Nielsen <kalle@php.net>
Tue, 3 Mar 2009 11:50:32 +0000 (11:50 +0000)
NEWS
ext/standard/string.c
ext/standard/tests/strings/bug47546.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 013c32d0cf2abc34fb7dd2d49e732afad46db182..7fb5768e31066cfa09e7edddfa34da3f17d5a5c1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,8 @@ PHP                                                                        NEWS
 ?? ??? 2009, PHP 5.2.10
 - Fixed memory corruptions while reading properties of zip files. (Ilia)
 
+- Fixed bug #47546 (Default value for limit parameter in explode is 0, 
+ not -1). (Kalle)
 - Fixed bug #47435 (FILTER_FLAG_NO_PRIV_RANGE does not work with ipv6
  addresses in the filter extension). (Ilia)
 
index 0311caa2d59a940767cfce93de6ae615d827c11b..9925b89add37ede89f071f00992db585f9fc467e 100644 (file)
@@ -1042,7 +1042,7 @@ PHP_FUNCTION(explode)
 
        if (limit == 0 || limit == 1) {
                add_index_stringl(return_value, 0, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
-       } else if (limit < 0 && argc == 3) {
+       } else if (limit < -1 && argc == 3) {
                php_explode_negative_limit(*delim, *str, return_value, limit);
        } else {
                php_explode(*delim, *str, return_value, limit);
diff --git a/ext/standard/tests/strings/bug47546.phpt b/ext/standard/tests/strings/bug47546.phpt
new file mode 100644 (file)
index 0000000..f04f9be
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+Bug #47546 (Default value for limit parameter in explode is 0, not -1)
+--FILE--
+<?php
+$str = 'one|two|three|four';
+
+print_r(explode('|', $str));
+print_r(explode('|', $str, -1));
+?>
+--EXPECT--
+Array
+(
+    [0] => one
+    [1] => two
+    [2] => three
+    [3] => four
+)
+Array
+(
+    [0] => one
+    [1] => two
+    [2] => three
+    [3] => four
+)