summaryrefslogtreecommitdiff
path: root/ext/gd
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2004-03-13 23:22:56 +0000
committerPierre Joye <pajoye@php.net>2004-03-13 23:22:56 +0000
commit9be8aeb69038c7046ab37d8e10d9ed6c46f508bb (patch)
tree0c888615736f43c35c4a8a3e8571dca7c84bfd10 /ext/gd
parent197b48322e4edaf43e35450800dfbb87901b2402 (diff)
downloadphp-git-9be8aeb69038c7046ab37d8e10d9ed6c46f508bb.tar.gz
- add tests for the bug #27582 (imagefilltoborder crashes)
Diffstat (limited to 'ext/gd')
-rw-r--r--ext/gd/tests/bug27582_2.phpt92
1 files changed, 92 insertions, 0 deletions
diff --git a/ext/gd/tests/bug27582_2.phpt b/ext/gd/tests/bug27582_2.phpt
new file mode 100644
index 0000000000..0467870cf2
--- /dev/null
+++ b/ext/gd/tests/bug27582_2.phpt
@@ -0,0 +1,92 @@
+--TEST--
+Bug #24594 (Filling an area using tiles).
+--SKIPIF--
+<?php
+ if (!extension_loaded('gd')) {
+ die("skip gd extension not available\n");
+ }
+ if (!GD_BUNDLED) {
+ die('skip external GD libraries may fail');
+ }
+?>
+--FILE--
+<?php
+/* $id */
+/*
+ * This test segfaults with the current imagefilltoborder
+ * implementation. A rewrite of this function is required
+ * to fix it. The algorithm used in gdImageFill (and the
+ * privat function for tiled fill) may help here. pierre.
+ */
+ $tile = imagecreate(36,36);
+ $base = imagecreate(150,150);
+ $white = imagecolorallocate($tile,255,255,255);
+ $black = imagecolorallocate($tile,0,0,0);
+ $white = imagecolorallocate($base,255,255,255);
+ $black = imagecolorallocate($base,0,0,0);
+
+ /* create the dots pattern */
+ for ($x=0;$x<36;$x+=2) {
+ for ($y=0;$y<36;$y+=2) {
+ imagesetpixel($tile,$x,$y,$black);
+ }
+ }
+
+ imagesettile($base,$tile);
+ imagerectangle($base, 9,9,139,139,$black);
+ imageline($base, 9,9,139,139,$black);
+ imagefill($base,11,12,IMG_COLOR_TILED);
+
+ $res = imagecolorat($base,0,10)==$black?'1':'0';
+ $res .= imagecolorat($base,0,20)==$black?'1':'0';
+ $res .= imagecolorat($base,0,30)==$black?'1':'0';
+ $res .= imagecolorat($base,0,40)==$black?'1':'0';
+ $res .= imagecolorat($base,0,50)==$black?'1':'0';
+ $res .= imagecolorat($base,0,60)==$black?'1':'0';
+
+ $res .= imagecolorat($base,11,12)==$white?'1':'0';
+ $res .= imagecolorat($base,12,13)==$white?'1':'0';
+ $res .= imagecolorat($base,13,14)==$white?'1':'0';
+ $res .= imagecolorat($base,14,15)==$white?'1':'0';
+ $res .= imagecolorat($base,15,16)==$white?'1':'0';
+ $res .= imagecolorat($base,16,17)==$white?'1':'0';
+
+ $res .= imagecolorat($base,10,12)==$black?'1':'0';
+ $res .= imagecolorat($base,11,13)==$black?'1':'0';
+ $res .= imagecolorat($base,12,14)==$black?'1':'0';
+ $res .= imagecolorat($base,13,15)==$black?'1':'0';
+ $res .= imagecolorat($base,14,16)==$black?'1':'0';
+ $res .= imagecolorat($base,15,17)==$black?'1':'0';
+ echo "$res\n";
+
+ imagefilledrectangle($base,0,0,149,149,$white);
+ imagerectangle($base, 9,9,139,139,$black);
+ imageline($base, 9,9,139,139,$black);
+ imagefilltoborder($base,0,0,$black,IMG_COLOR_TILED);
+
+ $res = imagecolorat($base,0,10)==$black?'1':'0';
+ $res .= imagecolorat($base,0,20)==$black?'1':'0';
+ $res .= imagecolorat($base,0,30)==$black?'1':'0';
+ $res .= imagecolorat($base,0,40)==$black?'1':'0';
+ $res .= imagecolorat($base,0,50)==$black?'1':'0';
+ $res .= imagecolorat($base,0,60)==$black?'1':'0';
+
+ $res .= imagecolorat($base,11,12)==$white?'1':'0';
+ $res .= imagecolorat($base,12,13)==$white?'1':'0';
+ $res .= imagecolorat($base,13,14)==$white?'1':'0';
+ $res .= imagecolorat($base,14,15)==$white?'1':'0';
+ $res .= imagecolorat($base,15,16)==$white?'1':'0';
+ $res .= imagecolorat($base,16,17)==$white?'1':'0';
+
+ $res .= imagecolorat($base,0,16)==$black?'1':'0';
+ $res .= imagecolorat($base,2,42)==$black?'1':'0';
+ $res .= imagecolorat($base,4,44)==$black?'1':'0';
+ $res .= imagecolorat($base,146,146)==$black?'1':'0';
+ $res .= imagecolorat($base,148,146)==$black?'1':'0';
+ $res .= imagecolorat($base,0,0)==$black?'1':'0';
+
+ echo "$res\n";
+?>
+--EXPECT--
+000000111111101010
+111111111111111111