diff --git a/ext/standard/array.c b/ext/standard/array.c index a3ce0d6c80cf7..2514beee62bde 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2598,7 +2598,7 @@ PHP_FUNCTION(array_fill) ZEND_PARSE_PARAMETERS_END(); if (EXPECTED(num > 0)) { - if (sizeof(num) > 4 && UNEXPECTED(EXPECTED(num > 0x7fffffff))) { + if (sizeof(num) > 4 && UNEXPECTED(num >INT_MAX)) { zend_argument_value_error(2, "is too large"); RETURN_THROWS(); } else if (UNEXPECTED(start_key > ZEND_LONG_MAX - num + 1)) { diff --git a/ext/standard/tests/array/array_fill_variation6.phpt b/ext/standard/tests/array/array_fill_variation6.phpt new file mode 100644 index 0000000000000..60dcec7e231ea --- /dev/null +++ b/ext/standard/tests/array/array_fill_variation6.phpt @@ -0,0 +1,19 @@ +--TEST-- +array_fill(): last element +--FILE-- +getMessage(), PHP_EOL; +} +?> +--EXPECT-- +int(1) +bool(true) +Cannot add element to the array as the next element is already occupied