diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c index 5c7b5ce1ba6..afa7e58f336 100644 --- a/ext/gd/libgd/gd.c +++ b/ext/gd/libgd/gd.c @@ -2715,6 +2715,19 @@ void gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c) maxy = p[i].y; } } + /* necessary special case: horizontal line */ + if (n > 1 && miny == maxy) { + x1 = x2 = p[0].x; + for (i = 1; (i < n); i++) { + if (p[i].x < x1) { + x1 = p[i].x; + } else if (p[i].x > x2) { + x2 = p[i].x; + } + } + gdImageLine(im, x1, miny, x2, miny, c); + return; + } pmaxy = maxy; /* 2.0.16: Optimization by Ilia Chipitsine -- don't waste time offscreen */ if (miny < 0) { diff --git a/ext/gd/tests/bug64641.phpt b/ext/gd/tests/bug64641.phpt new file mode 100644 index 00000000000..d8dae9a4d36 --- /dev/null +++ b/ext/gd/tests/bug64641.phpt @@ -0,0 +1,38 @@ +--TEST-- +Bug #64641 (imagefilledpolygon doesn't draw horizontal line) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +IDENTICAL diff --git a/ext/gd/tests/bug64641.png b/ext/gd/tests/bug64641.png new file mode 100644 index 00000000000..8376262d2f5 Binary files /dev/null and b/ext/gd/tests/bug64641.png differ diff --git a/ext/gd/tests/imagecolorallocatealpha_basic.phpt b/ext/gd/tests/imagecolorallocatealpha_basic.phpt index 720c50098a9..bdc417387fe 100644 --- a/ext/gd/tests/imagecolorallocatealpha_basic.phpt +++ b/ext/gd/tests/imagecolorallocatealpha_basic.phpt @@ -26,5 +26,5 @@ var_dump(md5(base64_encode($imgsrc))); var_dump($corA); ?> --EXPECT-- -string(32) "b856a0b1a15efe0f79551ebbb5651fe8" +string(32) "2a6424e4cb4e1b7391dfff74bf136bde" int(842163455) \ No newline at end of file diff --git a/ext/gd/tests/imagefilledarc_basic.phpt b/ext/gd/tests/imagefilledarc_basic.phpt index 9ff9bd37168..3357dd75aad 100644 --- a/ext/gd/tests/imagefilledarc_basic.phpt +++ b/ext/gd/tests/imagefilledarc_basic.phpt @@ -25,4 +25,4 @@ ob_end_clean(); echo md5(base64_encode($img)); ?> --EXPECT-- -894f394c7f2e2364642ef27fea6bfc33 +beffeaf5231adaaff1f21a2108fb6f7e diff --git a/ext/gd/tests/imagefilledarc_variation1.phpt b/ext/gd/tests/imagefilledarc_variation1.phpt index 2dec1ead2cb..2254b0910ff 100644 --- a/ext/gd/tests/imagefilledarc_variation1.phpt +++ b/ext/gd/tests/imagefilledarc_variation1.phpt @@ -25,4 +25,4 @@ ob_end_clean(); echo md5(base64_encode($img)); ?> --EXPECT-- -b77bbb8207e5adbebfcc8bd1c4074305 +b467492b806001c3720b3f18cfbde5b0 diff --git a/ext/gd/tests/imagefilledarc_variation2.phpt b/ext/gd/tests/imagefilledarc_variation2.phpt index 5c8ffba0014..57686ab64ce 100644 --- a/ext/gd/tests/imagefilledarc_variation2.phpt +++ b/ext/gd/tests/imagefilledarc_variation2.phpt @@ -25,4 +25,4 @@ ob_end_clean(); echo md5(base64_encode($img)); ?> --EXPECT-- -b8b572812b3c85678f6c38c4ecca7619 +cfad369fc6d863785d3c95b4b4788225 diff --git a/ext/gd/tests/imagegammacorrect_basic.phpt b/ext/gd/tests/imagegammacorrect_basic.phpt index b568728e714..33d6b1ad6c9 100644 --- a/ext/gd/tests/imagegammacorrect_basic.phpt +++ b/ext/gd/tests/imagegammacorrect_basic.phpt @@ -29,4 +29,4 @@ if ($gamma){ echo md5(base64_encode($img)); ?> --EXPECT-- -30639772903913594bc665743e1b9ab8 +e79553115df689ea5df18a4636380569 diff --git a/ext/gd/tests/imagegammacorrect_variation1.phpt b/ext/gd/tests/imagegammacorrect_variation1.phpt index cda96c62876..7a321f89d87 100644 --- a/ext/gd/tests/imagegammacorrect_variation1.phpt +++ b/ext/gd/tests/imagegammacorrect_variation1.phpt @@ -29,4 +29,4 @@ if ($gamma){ echo md5(base64_encode($img)); ?> --EXPECT-- -7716c0905ae08bd84b4d6cba8969a42e +b017b1ddc8bda00e82aa8cbfb54c35d4 diff --git a/ext/gd/tests/imagetruecolortopalette_basic.phpt b/ext/gd/tests/imagetruecolortopalette_basic.phpt index b0a0394b55c..3bd0d3102e1 100644 --- a/ext/gd/tests/imagetruecolortopalette_basic.phpt +++ b/ext/gd/tests/imagetruecolortopalette_basic.phpt @@ -28,4 +28,4 @@ echo md5(base64_encode($img)); ?> --EXPECT-- bool(true) -0843f63ab2f9fddedd69b0b421686bc5 \ No newline at end of file +1d41787ff70aa0c7eea5ee9304afa36b \ No newline at end of file