From: Ilia Alshanetsky Date: Mon, 18 Jun 2007 16:53:09 +0000 (+0000) Subject: Fixed bug #41686 (Omitting length param in array_slice not possible). X-Git-Tag: php-5.2.4RC1~329 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=24bdf0e3681f5e9e86a71f4463488ff10d60276f;p=php Fixed bug #41686 (Omitting length param in array_slice not possible). --- diff --git a/NEWS b/NEWS index 7282c5b8e8..3656a34523 100644 --- a/NEWS +++ b/NEWS @@ -34,6 +34,8 @@ PHP NEWS - Fixed bug #41724 (libxml_get_last_error() - errors survice request scope). (thekid at php dot net, Ilia) - Fixed bug #41717 (imagepolygon does not respect thickness). (Pierre) +- Fixed bug #41686 (Omitting length param in array_slice not possible). + (Ilia) - Fixed bug #41655 (open_basedir bypass via glob()). (Ilia) - Fixed bug #41640 (get_class_vars produces error on class constants). (Johannes) diff --git a/ext/standard/array.c b/ext/standard/array.c index 1901630ef5..b698ead1ee 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2213,7 +2213,7 @@ PHP_FUNCTION(array_slice) is not passed */ convert_to_long_ex(offset); offset_val = Z_LVAL_PP(offset); - if (argc >= 3) { + if (argc >= 3 && Z_TYPE_PP(length) != IS_NULL) { convert_to_long_ex(length); length_val = Z_LVAL_PP(length); } else { diff --git a/ext/standard/tests/array/bug41686.phpt b/ext/standard/tests/array/bug41686.phpt new file mode 100644 index 0000000000..9f1384eddd --- /dev/null +++ b/ext/standard/tests/array/bug41686.phpt @@ -0,0 +1,56 @@ +--TEST-- +Bug #41686 (Omitting length param in array_slice not possible) +--FILE-- +1,'b'=>1,'c'=>2); + +var_dump( + array_slice($a, 1), + array_slice($a, 1, 2, TRUE), + array_slice($a, 1, NULL, TRUE), + array_slice($b, 1), + array_slice($b, 1, 2, TRUE), + array_slice($b, 1, NULL, TRUE) +); + +echo "Done\n"; +?> +--EXPECT-- +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(2) { + [1]=> + int(2) + [2]=> + int(3) +} +array(2) { + [1]=> + int(2) + [2]=> + int(3) +} +array(2) { + ["b"]=> + int(1) + ["c"]=> + int(2) +} +array(2) { + ["b"]=> + int(1) + ["c"]=> + int(2) +} +array(2) { + ["b"]=> + int(1) + ["c"]=> + int(2) +} +Done \ No newline at end of file