diff options
Diffstat (limited to 'ext/standard/tests/array')
| -rw-r--r-- | ext/standard/tests/array/bug35014.phpt | 6 | ||||
| -rw-r--r-- | ext/standard/tests/array/bug35014_64bit.phpt | 36 | ||||
| -rw-r--r-- | ext/standard/tests/array/bug35821.phpt | 33 |
3 files changed, 73 insertions, 2 deletions
diff --git a/ext/standard/tests/array/bug35014.phpt b/ext/standard/tests/array/bug35014.phpt index 213bacae3..99ef0f7eb 100644 --- a/ext/standard/tests/array/bug35014.phpt +++ b/ext/standard/tests/array/bug35014.phpt @@ -1,5 +1,7 @@ --TEST-- -Bug #35014 (array_product() always returns 0) +Bug #35014 (array_product() always returns 0) (32bit) +--SKIPIF-- +<?php if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only"); ?> --INI-- precision=14 --FILE-- @@ -22,7 +24,7 @@ foreach ($tests as $v) { ?> --EXPECTF-- -Warning: array_product(): The argument should be an array in %s/bug35014.php on line 15 +Warning: array_product(): The argument should be an array in %s on line %d NULL int(0) int(0) diff --git a/ext/standard/tests/array/bug35014_64bit.phpt b/ext/standard/tests/array/bug35014_64bit.phpt new file mode 100644 index 000000000..a5b8da8a3 --- /dev/null +++ b/ext/standard/tests/array/bug35014_64bit.phpt @@ -0,0 +1,36 @@ +--TEST-- +Bug #35014 (array_product() always returns 0) (64bit) +--SKIPIF-- +<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); ?> +--INI-- +precision=14 +--FILE-- +<?php +$tests = array( + 'foo', + array(), + array(0), + array(3), + array(3, 3), + array(0.5, 2), + array(99999999, 99999999), + array(8.993, 7443241,988, sprintf("%u", -1)+0.44), + array(2,sprintf("%u", -1)), +); + +foreach ($tests as $v) { + var_dump(array_product($v)); +} +?> +--EXPECTF-- + +Warning: array_product(): The argument should be an array in %s on line %d +NULL +int(0) +int(0) +int(3) +int(9) +float(1) +int(9999999800000001) +float(2.8404260053903E+20) +int(8589934590) diff --git a/ext/standard/tests/array/bug35821.phpt b/ext/standard/tests/array/bug35821.phpt new file mode 100644 index 000000000..095323ebc --- /dev/null +++ b/ext/standard/tests/array/bug35821.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #35821 (array_map() segfaults when exception is throwed from the callback) +--FILE-- +<?php + +class Element +{ + public function ThrowException () + { + throw new Exception(); + } + + public static function CallBack(Element $elem) + { + $elem->ThrowException(); + } +} + +$arr = array(new Element(), new Element(), new Element()); +array_map(array('Element', 'CallBack'), $arr); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: array_map(): An error occurred while invoking the map callback in %s on line %d + +Fatal error: Uncaught exception 'Exception' in %s:%d +Stack trace: +#0 %s(%d): Element->ThrowException() +#1 [internal function]: Element::CallBack(Object(Element)) +#2 %s(%d): array_map(Array, Array) +#3 {main} + thrown in %s on line %d |
