summaryrefslogtreecommitdiff
path: root/Build/source/libs/gd/libgd-src/tests
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2020-04-10 03:40:48 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2020-04-10 03:40:48 +0000
commit503c0227622254c0ae3209a1fa72bcb68bb450bc (patch)
tree48df20533f300f819504c15af33cdc03fc386a93 /Build/source/libs/gd/libgd-src/tests
parenta9d86b73ecf95b83666e16c4d90e348c4958a63b (diff)
libgd 2.3.0
git-svn-id: svn://tug.org/texlive/trunk@54636 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/gd/libgd-src/tests')
-rw-r--r--Build/source/libs/gd/libgd-src/tests/CMakeLists.txt15
-rw-r--r--Build/source/libs/gd/libgd-src/tests/Makefile.am14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmpbin0 -> 102 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c40
-rw-r--r--Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt9
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/bug00383.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd/bug00383.gdbin0 -> 1101 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt14
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am16
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c18
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c28
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2bin0 -> 1113 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c35
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c59
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c36
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c30
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c26
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c26
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c25
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c22
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c56
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c36
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c47
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c28
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c38
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.pngbin0 -> 124 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c38
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.pngbin0 -> 124 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c35
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.pngbin0 -> 129 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c16
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c45
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c52
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c48
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c48
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c22
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.pngbin0 -> 24802 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c236
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c10
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c30
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.pngbin0 -> 2652 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c22
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.pngbin0 -> 27696 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c28
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c33
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c26
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c37
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.pngbin0 -> 120 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c26
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c38
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.pngbin32722 -> 32699 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c63
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c26
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c31
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c86
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.pngbin0 -> 1414 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c34
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.pngbin0 -> 179 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.pngbin0 -> 118 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c34
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.pngbin0 -> 180 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c31
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.pngbin0 -> 117 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c39
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c30
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c33
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c26
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c42
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt11
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am15
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00006.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00181.c1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00227.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/bug00499.c51
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c13
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gifbin0 -> 30 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c28
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.gifbin0 -> 1731 bytes
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am7
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c35
-rw-r--r--Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c31
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/bug00338.c32
-rw-r--r--Build/source/libs/gd/libgd-src/tests/png/png_resolution.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c29
-rw-r--r--Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt5
-rw-r--r--Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt1
-rw-r--r--Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c26
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt6
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am8
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c30
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c39
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm4
-rw-r--r--Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c26
195 files changed, 2203 insertions, 679 deletions
diff --git a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
index 7eef4bf46eb..c99fe21457c 100644
--- a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
@@ -1,4 +1,3 @@
-
if (BUILD_TEST)
SET(DART_TESTING_TIMEOUT 5)
@@ -28,15 +27,21 @@ if (BUILD_TEST)
gdimageclone
gdimagecolor
gdimagecolorclosest
+ gdimagecolorclosesthwb
gdimagecolordeallocate
gdimagecolorexact
+ gdimagecolormatch
gdimagecolorreplace
gdimagecolorresolve
gdimagecolortransparent
+ gdimagecompare
gdimagecontrast
gdimageconvolution
gdimagecopy
+ gdimagecopymerge
+ gdimagecopymergegray
gdimagecopyresampled
+ gdimagecopyresized
gdimagecopyrotated
gdimagecreate
gdimagecrop
@@ -49,6 +54,7 @@ if (BUILD_TEST)
gdimagefilltoborder
gdimagefilter
gdimageflip
+ gdimageellipse
gdimagegrayscale
gdimageline
gdimagenegate
@@ -59,15 +65,22 @@ if (BUILD_TEST)
gdimagerotate
gdimagescale
gdimagescatterex
+ gdimagesetinterpolationmethod
gdimagesetpixel
+ gdimagesquaretocircle
+ gdimagestring
+ gdimagestring16
gdimagestringft
gdimagestringftex
+ gdimagestringup
+ gdimagestringup16
gdimagetruecolortopalette
gdinterpolatedscale
gdnewfilectx
gdtest
gdtiled
gdtransformaffineboundingbox
+ gdtransformaffinecopy
gif
jpeg
png
diff --git a/Build/source/libs/gd/libgd-src/tests/Makefile.am b/Build/source/libs/gd/libgd-src/tests/Makefile.am
index 5f8b624bc1c..f342ceb088b 100644
--- a/Build/source/libs/gd/libgd-src/tests/Makefile.am
+++ b/Build/source/libs/gd/libgd-src/tests/Makefile.am
@@ -23,15 +23,21 @@ include gdimagebrightness/Makemodule.am
include gdimageclone/Makemodule.am
include gdimagecolor/Makemodule.am
include gdimagecolorclosest/Makemodule.am
+include gdimagecolorclosesthwb/Makemodule.am
include gdimagecolordeallocate/Makemodule.am
include gdimagecolorexact/Makemodule.am
+include gdimagecolormatch/Makemodule.am
include gdimagecolorreplace/Makemodule.am
include gdimagecolorresolve/Makemodule.am
include gdimagecolortransparent/Makemodule.am
+include gdimagecompare/Makemodule.am
include gdimagecontrast/Makemodule.am
include gdimageconvolution/Makemodule.am
include gdimagecopy/Makemodule.am
+include gdimagecopymerge/Makemodule.am
+include gdimagecopymergegray/Makemodule.am
include gdimagecopyresampled/Makemodule.am
+include gdimagecopyresized/Makemodule.am
include gdimagecopyrotated/Makemodule.am
include gdimagecreate/Makemodule.am
include gdimagecrop/Makemodule.am
@@ -44,6 +50,7 @@ include gdimagefilledrectangle/Makemodule.am
include gdimagefilltoborder/Makemodule.am
include gdimagefilter/Makemodule.am
include gdimageflip/Makemodule.am
+include gdimageellipse/Makemodule.am
include gdimagegrayscale/Makemodule.am
include gdimageline/Makemodule.am
include gdimagenegate/Makemodule.am
@@ -54,15 +61,22 @@ include gdimagerectangle/Makemodule.am
include gdimagerotate/Makemodule.am
include gdimagescale/Makemodule.am
include gdimagescatterex/Makemodule.am
+include gdimagesetinterpolationmethod/Makemodule.am
include gdimagesetpixel/Makemodule.am
+include gdimagesquaretocircle/Makemodule.am
+include gdimagestring/Makemodule.am
+include gdimagestring16/Makemodule.am
include gdimagestringft/Makemodule.am
include gdimagestringftex/Makemodule.am
+include gdimagestringup/Makemodule.am
+include gdimagestringup16/Makemodule.am
include gdimagetruecolortopalette/Makemodule.am
include gdinterpolatedscale/Makemodule.am
include gdnewfilectx/Makemodule.am
include gdtest/Makemodule.am
include gdtiled/Makemodule.am
include gdtransformaffineboundingbox/Makemodule.am
+include gdtransformaffinecopy/Makemodule.am
include gif/Makemodule.am
include jpeg/Makemodule.am
include png/Makemodule.am
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
index 8f2a88f9753..0cc1d067b93 100644
--- a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
@@ -1,13 +1,9 @@
LIST(APPEND TESTS_FILES
bmp_null
bug00275
-)
-
-IF(PNG_FOUND)
-LIST(APPEND TESTS_FILES
+ bug00450
bmp_im2im
bug00276
)
-ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
index f3f1660e9ce..e7908f34c38 100644
--- a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
@@ -1,12 +1,10 @@
libgd_test_programs += \
bmp/bmp_null \
- bmp/bug00275
-
-if HAVE_LIBPNG
-libgd_test_programs += \
+ bmp/bug00275 \
+ bmp/bug00450 \
bmp/bmp_im2im \
bmp/bug00276
-endif
EXTRA_DIST += \
+ bmp/bug00450.bmp \
bmp/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c b/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
index 710c084c877..775d8495dd5 100644
--- a/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
@@ -6,7 +6,7 @@
#ifdef __GNUC__
-#define UNUSED __attribute__((unused))
+#define UNUSED __attribute__((__unused__))
#else
#define UNUSED
#endif
@@ -49,5 +49,7 @@ int main()
/* "save" the image as BMP */
gdImageBmpCtx(im, &ctx, 2);
+ gdImageDestroy(im);
+
return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c b/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
index 58ca423b7ee..dd5d5131202 100644
--- a/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
@@ -28,5 +28,7 @@ int main()
gdImageDestroy(im_orig);
gdImageDestroy(im_saved);
+ gdFree(data);
+
return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmp b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmp
new file mode 100644
index 00000000000..2db27a37f92
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmp
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c
new file mode 100644
index 00000000000..e048845654f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main(void) {
+ char *path = gdTestFilePath("bmp/bug00450.bmp");
+ gdImagePtr im = gdImageCreateFromFile(path);
+ gdTestAssert(im != NULL);
+
+ if (im) {
+ char const ref[] =
+ "# "
+ "## "
+ "### "
+ "#### "
+ "##### "
+ "###### "
+ "####### "
+ "######## "
+ "######### "
+ "##########"
+ ;
+ int x, y;
+
+ for (y = 0; y < 10; ++y) {
+ for (x = 0; x < 10; ++x) {
+ int const expected_pixel = ref[x + y * 10] == '#';
+ int const actual_pixel = gdImageGetPixel(im, x, y);
+ gdTestAssert(expected_pixel == actual_pixel);
+ }
+ }
+
+ gdImageDestroy(im);
+ }
+
+ free(path);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
index 312759a176f..a0dda49c5fe 100644
--- a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
@@ -1,5 +1,5 @@
if HAVE_LIBFREETYPE
-if HAVE_LIBPNG
+if HAVE_LIBPNG
libgd_test_programs += \
freetype/bug00132
endif
diff --git a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
index 6053ba50826..e86c7801dcc 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
@@ -1,13 +1,14 @@
LIST(APPEND TESTS_FILES
- gd_null
- gd_num_colors
gd_versiontest
)
-IF(PNG_FOUND)
+IF(ENABLE_GD_FORMATS)
LIST(APPEND TESTS_FILES
+ bug00383
+ gd_null
+ gd_num_colors
gd_im2im
)
-ENDIF(PNG_FOUND)
+ENDIF(ENABLE_GD_FORMATS)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am
index e4a741fb9dd..4a45bc22025 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am
@@ -1,13 +1,15 @@
libgd_test_programs += \
- gd/gd_null \
- gd/gd_num_colors \
gd/gd_versiontest
-if HAVE_LIBPNG
+if ENABLE_GD_FORMATS
libgd_test_programs += \
+ gd/bug00383 \
+ gd/gd_null \
+ gd/gd_num_colors \
gd/gd_im2im
endif
EXTRA_DIST += \
+ gd/bug00383.gd \
gd/crafted_num_colors.gd \
gd/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gd/bug00383.c b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.c
new file mode 100644
index 00000000000..edcfd059456
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.c
@@ -0,0 +1,32 @@
+/**
+ * Test that invalid transparent colors can't be read
+ *
+ * We're reading a corrupt palette image in GD format, which has only a single
+ * palette entry, but claims that the transparent color would be 1. We check
+ * that the transparency is simply ignored in this case.
+ *
+ * See also <https://github.com/libgd/libgd/issues/383>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ fp = gdTestFileOpen2("gd", "bug00383.gd");
+ gdTestAssert(fp != NULL);
+ im = gdImageCreateFromGd(fp);
+ gdTestAssert(im != NULL);
+ fclose(fp);
+
+ gdTestAssert(gdImageGetTransparent(im) == -1);
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd/bug00383.gd b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.gd
new file mode 100644
index 00000000000..7f8611cd76c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.gd
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
index d60823130d8..cc188ca043d 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
@@ -1,25 +1,27 @@
+IF(ENABLE_GD_FORMATS)
+IF(ZLIB_FOUND)
LIST(APPEND TESTS_FILES
bug_289
bug00209
bug00309
bug00354
+ bug00383
+ createimagefromgd2part
+ createimagefromgd2partptr
gd2_empty_file
php_bug_72339
+ gd2_null
gd2_read_corrupt
too_few_image_data
-)
-
-IF(ZLIB_FOUND)
-LIST(APPEND TESTS_FILES
- gd2_null
+ gd2_im2im
)
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
- gd2_im2im
gd2_read
)
ENDIF(PNG_FOUND)
ENDIF(ZLIB_FOUND)
+ENDIF(ENABLE_GD_FORMATS)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
index 9c53b85649a..5cd29e6f7f9 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
@@ -1,29 +1,33 @@
+if ENABLE_GD_FORMATS
+if HAVE_LIBZ
libgd_test_programs += \
gd2/bug_289 \
gd2/bug00209 \
gd2/bug00309 \
gd2/bug00354 \
+ gd2/bug00383 \
+ gd2/createimagefromgd2part \
+ gd2/createimagefromgd2partptr \
gd2/gd2_empty_file \
gd2/php_bug_72339 \
+ gd2/gd2_null \
gd2/gd2_read_corrupt \
- gd2/too_few_image_data
-
-if HAVE_LIBZ
-libgd_test_programs += \
- gd2/gd2_null
+ gd2/too_few_image_data \
+ gd2/gd2_im2im
if HAVE_LIBPNG
libgd_test_programs += \
- gd2/gd2_im2im \
gd2/gd2_read
endif
endif
+endif
EXTRA_DIST += \
gd2/CMakeLists.txt \
gd2/bug00209.gd2 \
gd2/bug00354a.gd2 \
gd2/bug00354b.gd2 \
+ gd2/bug00383.gd2 \
gd2/conv_gd2_exp.gd2 \
gd2/conv_test.gd2 \
gd2/conv_test_exp.png \
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
index 4379d389ccc..7904d01fcf5 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
@@ -8,21 +8,19 @@
* See <https://github.com/libgd/libgd/issues/209>.
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
+ gdImagePtr im;
+ FILE *fp;
- fp = gdTestFileOpen2("gd2", "bug00209.gd2");
- gdTestAssert(fp != NULL);
- im = gdImageCreateFromGd2(fp);
- gdTestAssert(im == NULL);
- fclose(fp);
+ fp = gdTestFileOpen2("gd2", "bug00209.gd2");
+ gdTestAssert(fp != NULL);
+ im = gdImageCreateFromGd2(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
index 8dc27cc5ad0..1bce091ab09 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
@@ -6,27 +6,25 @@
* See also <https://github.com/libgd/libgd/issues/354>.
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
+ gdImagePtr im;
+ FILE *fp;
- fp = gdTestFileOpen2("gd2", "bug00354a.gd2");
- gdTestAssert(fp != NULL);
- im = gdImageCreateFromGd2(fp);
- gdTestAssert(im == NULL);
- fclose(fp);
+ fp = gdTestFileOpen2("gd2", "bug00354a.gd2");
+ gdTestAssert(fp != NULL);
+ im = gdImageCreateFromGd2(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
- fp = gdTestFileOpen2("gd2", "bug00354b.gd2");
- gdTestAssert(fp != NULL);
- im = gdImageCreateFromGd2(fp);
- gdTestAssert(im == NULL);
- fclose(fp);
+ fp = gdTestFileOpen2("gd2", "bug00354b.gd2");
+ gdTestAssert(fp != NULL);
+ im = gdImageCreateFromGd2(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c
new file mode 100644
index 00000000000..dbbf661aa58
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c
@@ -0,0 +1,32 @@
+/**
+ * Test that invalid transparent colors can't be read
+ *
+ * We're reading a corrupt palette image in GD2 format, which has only a single
+ * palette entry, but claims that the transparent color would be 1. We check
+ * that the transparency is simply ignored in this case.
+ *
+ * See also <https://github.com/libgd/libgd/issues/383>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ fp = gdTestFileOpen2("gd2", "bug00383.gd2");
+ gdTestAssert(fp != NULL);
+ im = gdImageCreateFromGd2(fp);
+ gdTestAssert(im != NULL);
+ fclose(fp);
+
+ gdTestAssert(gdImageGetTransparent(im) == -1);
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2
new file mode 100644
index 00000000000..dcb164de288
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
index ad311e93ebc..9ca03cc1ee1 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
@@ -29,5 +29,7 @@ int main()
gdTestAssertMsg(buffer[12] == 0, MSG, "1st", 0, buffer[12]);
gdTestAssertMsg(buffer[13] == GD2_FMT_TRUECOLOR_COMPRESSED, MSG, "2nd", GD2_FMT_TRUECOLOR_COMPRESSED, buffer[13]);
+ gdFree(buffer);
+
return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c
new file mode 100644
index 00000000000..0c81ba6235b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c
@@ -0,0 +1,35 @@
+/**
+ *Base test for gdImageCreateFromGd2Part()
+ */
+#include "gd.h"
+#include "gdtest.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+int main()
+{
+ gdImagePtr im;
+ FILE *p;
+ int expected_color = 0xffffff;
+ int actual_color = 0;
+
+ p = gdTestFileOpen2("gd2", "conv_test.gd2");
+
+ if (!p) {
+ gdTestErrorMsg("failed, connot open gd2 file: conv_test.gd2");
+ return 1;
+ }
+
+ im = gdImageCreateFromGd2Part(p, 3, 3, 3, 3);
+ fclose(p);
+
+ if (!im) {
+ return 1;
+ }
+
+ actual_color = gdImageGetPixel(im, 2, 2);
+ gdImageDestroy(im);
+ gdTestAssert(expected_color == actual_color);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c
new file mode 100644
index 00000000000..e432874667f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c
@@ -0,0 +1,59 @@
+/**
+ * Base test for gdImageCreateFromGd2PartPtr()
+ */
+#include "gd.h"
+#include "gdtest.h"
+#include <stdio.h>
+
+int main()
+{
+ FILE *p;
+ gdImagePtr im, partim;
+ void *pg;
+ int size = 0;
+ int status = 0;
+ int actual_color = 0;
+ int expected_color = 0xffffff;
+
+ p = gdTestFileOpen2("gd2", "conv_test.gd2");
+ if (!p) {
+ gdTestErrorMsg("failed, cannot open gd2 file:conv_test.gd2");
+ return 1;
+ }
+
+ im = gdImageCreateFromGd2(p);
+ fclose(p);
+
+ if (!im) {
+ gdTestErrorMsg("failed, cannot create gd2 file.");
+ return 1;
+ }
+
+ pg = gdImageGd2Ptr(im, (GD2_CHUNKSIZE_MIN + GD2_CHUNKSIZE_MAX) / 2, GD2_FMT_COMPRESSED, &size);
+ if (!pg) {
+ status = 1;
+ goto done1;
+ }
+
+ if (size <= 0) {
+ status = 1;
+ goto done0;
+ }
+
+ partim = gdImageCreateFromGd2PartPtr(size, pg, 3, 3, 3, 3);
+ if (!partim) {
+ status = 1;
+ goto done0;
+ }
+
+ actual_color = gdImageGetPixel(partim, 2, 2);
+ status = (expected_color == actual_color) ? 0 : 1;
+ gdImageDestroy(partim);
+
+done0:
+ gdFree(pg);
+done1:
+ gdImageDestroy(im);
+
+ return status;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c
index 8ce8bd15d57..9f2b808255e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c
@@ -33,17 +33,18 @@ int main(int argc, char *argv[])
fp = gdTestFileOpen2("gd2", path_exp[i]);
if (!fp) {
gdTestErrorMsg("failed, cannot open file: %s\n", path_exp[i]);
+ gdImageDestroy(im);
return 1;
}
exp = gdImageCreateFromPng(fp);
if (!gdAssertImageEquals(exp, im)) {
gdTestErrorMsg("image %s differs from expected result\n", path[i]);
- gdImageDestroy(im);
error = 1;
}
if (exp) {
gdImageDestroy(exp);
}
+ gdImageDestroy(im);
} else {
/* expected to fail */
if (im) {
diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
index 7ce60289ef8..8217c87c1d5 100644
--- a/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
+++ b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
@@ -29,7 +29,7 @@ int main()
im = gdImageCreateFromGd2(fp);
fclose(fp);
-
+
gdTestAssertMsg(im == NULL, "Image should have failed to be loaded\n");
return gdNumFailures();
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
index 779704830f0..dfed2429970 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
@@ -2,40 +2,36 @@
* Basic test for gdImageBrightness()
*/
-
#include "gd.h"
#include "gdtest.h"
-
static void test_brightness(int brightness);
-
int main()
{
- test_brightness(+100);
- test_brightness(-100);
+ test_brightness(+100);
+ test_brightness(-100);
- return gdNumFailures();
+ return gdNumFailures();
}
-
static void test_brightness(int brightness)
{
- gdImagePtr im;
- FILE *fp;
- char basename[256];
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char basename[256];
+ char *path;
- fp = gdTestFileOpen2("gdimagebrightness", "basic.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimagebrightness", "basic.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- gdImageBrightness(im, brightness);
+ gdImageBrightness(im, brightness);
- sprintf(basename, "basic%+03d.png", brightness);
- path = gdTestFilePath2("gdimagebrightness", basename);
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ sprintf(basename, "basic%+03d.png", brightness);
+ path = gdTestFilePath2("gdimagebrightness", basename);
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
index e6ccc318a0f..662f4e966a1 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
@@ -1,5 +1,6 @@
LIST(APPEND TESTS_FILES
bug00300
+ style
)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
index 4b1b54c0100..51abf5c1171 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
@@ -1,5 +1,6 @@
libgd_test_programs += \
- gdimageclone/bug00300
+ gdimageclone/bug00300 \
+ gdimageclone/style
EXTRA_DIST += \
gdimageclone/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c b/Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c
new file mode 100644
index 00000000000..c2b246ed705
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c
@@ -0,0 +1,30 @@
+/**
+ * Cloning an image should exactly reproduce all style related data
+ */
+
+
+#include <string.h>
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr im, clone;
+ int style[] = {0, 0, 0};
+
+ im = gdImageCreate(8, 8);
+ gdImageSetStyle(im, style, sizeof(style)/sizeof(style[0]));
+
+ clone = gdImageClone(im);
+ gdTestAssert(clone != NULL);
+
+ gdTestAssert(clone->styleLength == im->styleLength);
+ gdTestAssert(clone->stylePos == im->stylePos);
+ gdTestAssert(!memcmp(clone->style, im->style, sizeof(style)/sizeof(style[0])));
+
+ gdImageDestroy(clone);
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
index ff2fe349854..86c0aff10be 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
@@ -2,28 +2,26 @@
* Basic test for gdImageColor()
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("gdimagecolor", "basic.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimagecolor", "basic.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- gdImageColor(im, 127, -127, -127, 0);
+ gdImageColor(im, 127, -127, -127, 0);
- path = gdTestFilePath2("gdimagecolor", "basic_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("gdimagecolor", "basic_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
index be903abe33e..3964bfa79c0 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
@@ -1,7 +1,5 @@
-IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
gdimagecolorclosest
)
-ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am
index f4da8beca66..be4220412ef 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am
@@ -1,7 +1,5 @@
-if HAVE_LIBPNG
libgd_test_programs += \
gdimagecolorclosest/gdimagecolorclosest
-endif
EXTRA_DIST += \
gdimagecolorclosest/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt
new file mode 100644
index 00000000000..7a8afdc1e89
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdImageColorClosestHWB
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am
new file mode 100644
index 00000000000..14eddbd2395
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am
@@ -0,0 +1,7 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecolorclosesthwb/gdImageColorClosestHWB
+endif
+
+EXTRA_DIST += \
+ gdimagecolorclosesthwb/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c
new file mode 100644
index 00000000000..ab2018779fe
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c
@@ -0,0 +1,26 @@
+/**
+ * Basic test for gdImageColorClosestHWB()
+ **/
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ fp = gdTestFileOpen2("gdimageflip", "remi.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
+
+ int result = gdImageColorClosestHWB(im, 255, 0, 255);
+
+ if (gdTestAssert(result <= 0))
+ {
+ gdImageDestroy(im);
+ return 1;
+ }
+
+ gdImageDestroy(im);
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
index 294fe4f7c9b..029d9296495 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
@@ -1,7 +1,5 @@
-IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
gdimagecolorexact
)
-ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am
index 835b25ed62c..74279991e65 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am
@@ -1,7 +1,5 @@
-if HAVE_LIBPNG
libgd_test_programs += \
gdimagecolorexact/gdimagecolorexact
-endif
EXTRA_DIST += \
gdimagecolorexact/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt
new file mode 100644
index 00000000000..857b99a278e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt
@@ -0,0 +1,6 @@
+LIST(APPEND TESTS_FILES
+ cve_2019_6977
+ gdimagecolormatch
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am
new file mode 100644
index 00000000000..4ed48cec862
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am
@@ -0,0 +1,6 @@
+libgd_test_programs += \
+ gdimagecolormatch/cve_2019_6977 \
+ gdimagecolormatch/gdimagecolormatch
+
+EXTRA_DIST += \
+ gdimagecolormatch/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c
new file mode 100644
index 00000000000..fdd7af57a89
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c
@@ -0,0 +1,25 @@
+/**
+ * Test for CVE-2019-6977
+ */
+
+#include "gd.h"
+
+int main()
+{
+ gdImagePtr im1;
+ gdImagePtr im2;
+
+ im1 = gdImageCreateTrueColor(0xfff, 0xfff);
+ im2 = gdImageCreate(0xfff, 0xfff);
+ if (gdImageColorAllocate(im2, 0, 0, 0) < 0)
+ {
+ gdImageDestroy(im1);
+ gdImageDestroy(im2);
+ return 1;
+ }
+ gdImageSetPixel(im2, 0, 0, 255);
+ gdImageColorMatch(im1, im2);
+ gdImageDestroy(im1);
+ gdImageDestroy(im2);
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c
new file mode 100644
index 00000000000..f59c7691b3d
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c
@@ -0,0 +1,32 @@
+/**
+ * Basic test for gdImageColorMatch()
+ **/
+#include "gd.h"
+#include "gdtest.h"
+
+int main(){
+ gdImagePtr im1, im2;
+
+ im1 = gdImageCreateTrueColor(80, 80);
+ im2 = gdImageCreate(80, 80);
+
+ gdImageColorAllocate(im1, 255, 36, 74);
+
+ gdImageColorAllocate(im2, 255, 36, 74);
+ gdImageColorAllocate(im2, 40, 0, 240);
+ gdImageColorAllocate(im2, 255, 100, 255);
+ gdImageColorAllocate(im2, 80, 60, 44);
+
+ int ifMatch = gdImageColorMatch(im1, im2);
+
+ gdImageDestroy(im1);
+ gdImageDestroy(im2);
+
+ if (gdTestAssert(ifMatch != 0))
+ {
+ gdTestErrorMsg("gdImageColorMatch failed.\n");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
index f2495d973ee..03bd9ebdf0a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
@@ -1,7 +1,5 @@
-IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
gdimagecolorreplace
)
-ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am
index a8badb05c99..3ea38e55500 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am
@@ -1,7 +1,5 @@
-if HAVE_LIBPNG
libgd_test_programs += \
gdimagecolorreplace/gdimagecolorreplace
-endif
EXTRA_DIST += \
gdimagecolorreplace/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
index dd3c17ee49d..102a674fe8c 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
@@ -44,22 +44,22 @@ static void run_tests(gdImagePtr im, int *error)
COLOR(yellow, 0xFF, 0xFF, 0);
#undef COLOR
-#define CHECK_VALUE(n, expected) do { \
- if (gdTestAssert((n) == (expected)) != 1) { \
+#define CHECK_VALUE(n, expected) do { \
+ if (gdTestAssert((n) == (expected)) != 1) { \
gdTestErrorMsg("%d is expected, but %d\n", expected, n);\
- *error = -1; \
- } \
+ *error = -1; \
+ } \
} while (0)
#define CHECK_PIXEL(x, y, expected) \
- do { \
- int pix; \
- gdImageSetClip(im, 0, 0, 4, 4); \
- pix = gdImageGetPixel(im, (x), (y)); \
- if (gdTestAssert(pix == (expected)) != 1) { \
+ do { \
+ int pix; \
+ gdImageSetClip(im, 0, 0, 4, 4); \
+ pix = gdImageGetPixel(im, (x), (y)); \
+ if (gdTestAssert(pix == (expected)) != 1) { \
gdTestErrorMsg("%d is expected, but %d\n", expected, pix); \
- *error = -1; \
- } \
+ *error = -1; \
+ } \
} while (0)
c = gdImageColorAllocate(im, 0xFF, 0, 0xFF);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
index 5b553388668..a26084285d1 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
@@ -1,7 +1,5 @@
-IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
gdimagecolorresolve
)
-ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am
index 316484c2068..a3e944276e4 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am
@@ -1,7 +1,5 @@
-if HAVE_LIBPNG
libgd_test_programs += \
gdimagecolorresolve/gdimagecolorresolve
-endif
EXTRA_DIST += \
gdimagecolorresolve/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt
new file mode 100644
index 00000000000..2974a07a620
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt
@@ -0,0 +1,4 @@
+LIST(APPEND TESTS_FILES
+ gdimagecompare
+)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am
new file mode 100644
index 00000000000..b4b0ebbd62a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdimagecompare/gdimagecompare
+
+EXTRA_DIST += \
+ gdimagecompare/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c
new file mode 100644
index 00000000000..0e8367a8095
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c
@@ -0,0 +1,56 @@
+/**
+ * Base test for gdImageCompare()
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im1;
+ gdImagePtr im2;
+ int black;
+ int red1, red2;
+ int yellow1, yellow2;
+ int white;
+ int blue;
+ int ret;
+
+ im1 = gdImageCreate(128, 128);
+ im2 = gdImageCreateTrueColor(256, 256);
+
+ /* Set different interlace */
+ gdImageInterlace(im1, 1);
+ gdImageInterlace(im2, 2);
+
+ /* Set different transparent */
+ gdImageColorTransparent(im1, 10);
+ gdImageColorTransparent(im2, 20);
+
+ /* Allocate different color number */
+ black = gdImageColorAllocate(im1, 0, 0, 0);
+ red1 = gdImageColorAllocate(im1, 255, 0, 0);
+ yellow1 = gdImageColorAllocate(im1, 255, 255, 0);
+ red2 = gdImageColorAllocate(im2, 255, 0, 0);
+ yellow2 = gdImageColorAllocate(im2, 255, 255, 0);
+ white = gdImageColorAllocate(im2, 255, 255, 255);
+ blue = gdImageColorAllocate(im2, 0, 0, 255);
+
+ /* Filled different color */
+ gdImageFilledRectangle(im1, 0, 0, 127, 8, black);
+ gdImageFilledRectangle(im1, 9, 0, 127, 16, red1);
+ gdImageFilledRectangle(im1, 17, 0, 127, 24, yellow1);
+ gdImageFilledRectangle(im2, 0, 0, 127, 8, red2);
+ gdImageFilledRectangle(im2, 9, 0, 127, 16, yellow2);
+ gdImageFilledRectangle(im2, 17, 0, 127, 24, white);
+ gdImageFilledRectangle(im2, 25, 0, 127, 32, blue);
+
+ ret = gdImageCompare(im1, im2);
+
+ gdTestAssert(ret == (GD_CMP_INTERLACE | GD_CMP_TRANSPARENT | GD_CMP_TRUECOLOR | GD_CMP_SIZE_X | GD_CMP_SIZE_Y | GD_CMP_COLOR | GD_CMP_IMAGE | GD_CMP_NUM_COLORS));
+
+ gdImageDestroy(im1);
+ gdImageDestroy(im2);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
index 66c17ab9fb9..ef1f44ac16b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
@@ -2,40 +2,36 @@
* Basic test for gdImageContrast()
*/
-
#include "gd.h"
#include "gdtest.h"
-
static void test_contrast(double contrast);
-
int main()
{
- test_contrast(+50.0);
- test_contrast(-50.0);
+ test_contrast(+50.0);
+ test_contrast(-50.0);
- return gdNumFailures();
+ return gdNumFailures();
}
-
static void test_contrast(double contrast)
{
- gdImagePtr im;
- FILE *fp;
- char basename[256];
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char basename[256];
+ char *path;
- fp = gdTestFileOpen2("gdimagecontrast", "basic.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimagecontrast", "basic.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- gdImageContrast(im, contrast);
+ gdImageContrast(im, contrast);
- sprintf(basename, "basic%+03.0f.png", contrast);
- path = gdTestFilePath2("gdimagecontrast", basename);
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ sprintf(basename, "basic%+03.0f.png", contrast);
+ path = gdTestFilePath2("gdimagecontrast", basename);
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
index 802c38220ae..dc1fc51cefb 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
@@ -1,3 +1,5 @@
+LIST(APPEND TESTS_FILES bug00369)
+
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
basic
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
index 8f65b0f36e9..df5249d4529 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
@@ -1,3 +1,6 @@
+libgd_test_programs += \
+ gdimageconvolution/bug00369
+
if HAVE_LIBPNG
libgd_test_programs += \
gdimageconvolution/basic
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
index 267a079d898..5fe308ca043 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
@@ -2,61 +2,54 @@
* Basic test for gdImageConvolution() and related functions
*/
-
#include "gd.h"
#include "gdtest.h"
-
static void test_convolution(void (*convolution_func)(gdImagePtr im), const char *expected)
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("gdimageconvolution", "basic.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimageconvolution", "basic.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- convolution_func(im);
+ convolution_func(im);
- path = gdTestFilePath2("gdimageconvolution", expected);
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("gdimageconvolution", expected);
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
}
-
static void test_edge_detect_quick(gdImagePtr im)
{
- gdImageEdgeDetectQuick(im);
+ gdImageEdgeDetectQuick(im);
}
-
static void test_smooth(gdImagePtr im)
{
- gdImageSmooth(im, 5);
+ gdImageSmooth(im, 5);
}
-
static void test_emboss(gdImagePtr im)
{
- gdImageEmboss(im);
+ gdImageEmboss(im);
}
-
static void test_mean_removal(gdImagePtr im)
{
- gdImageMeanRemoval(im);
+ gdImageMeanRemoval(im);
}
-
int main()
{
- test_convolution(&test_edge_detect_quick, "basic_edge_detect_quick.png");
- test_convolution(&test_smooth, "basic_smooth.png");
- test_convolution(&test_emboss, "basic_emboss.png");
- test_convolution(&test_mean_removal, "basic_mean_removal.png");
+ test_convolution(&test_edge_detect_quick, "basic_edge_detect_quick.png");
+ test_convolution(&test_smooth, "basic_smooth.png");
+ test_convolution(&test_emboss, "basic_emboss.png");
+ test_convolution(&test_mean_removal, "basic_mean_removal.png");
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c
new file mode 100644
index 00000000000..631cb7adbc1
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c
@@ -0,0 +1,28 @@
+/**
+ * Test Issue #369 for gdImageConvolution()
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ float matrix[3][3] = {
+ {1, 0, 1},
+ {0, 5, 0},
+ {1, 0, 0}
+ };
+
+ im = gdImageCreateTrueColor(40, 40);
+ gdImageAlphaBlending(im, gdEffectReplace);
+ gdImageFilledRectangle(im, 0, 0, 39, 39, 0x7FFFFFFF);
+ gdImageFilledEllipse(im, 19, 19, 20, 20, 0x00FF00);
+
+ gdImageConvolution(im, matrix, 9, 1);
+ gdTestAssert(0x7F010101 == gdImageGetPixel(im, 0, 0));
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt
new file mode 100644
index 00000000000..df9bdc67f3b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagecopymerge
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am
new file mode 100644
index 00000000000..67511681117
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecopymerge/gdimagecopymerge
+endif
+
+EXTRA_DIST += \
+ gdimagecopymerge/CMakeLists.txt \
+ gdimagecopymerge/gdimagecopymerge_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c
new file mode 100644
index 00000000000..9f08020dd48
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c
@@ -0,0 +1,38 @@
+/**
+ * Basic test for gdImageCopyMerge()
+ */
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr dst = NULL;
+ gdImagePtr src = NULL;
+ int error = 0;
+
+ dst = gdImageCreate(100, 100);
+ src = gdImageCreate(50, 50);
+
+ if (gdTestAssert(!dst)) {
+ error = 1;
+ goto done;
+ }
+ if (gdTestAssert(!src)) {
+ error = 1;
+ goto done;
+ }
+
+ gdImageColorAllocate(src, 255, 255, 255);
+ gdImageColorAllocate(dst, 0, 0, 0);
+ gdImageCopyMerge(dst, src, 25, 25, 0, 0, 50, 50, 50);
+
+ if (!gdAssertImageEqualsToFile("gdimagecopymerge/gdimagecopymerge_exp.png", dst)) {
+ error = 1;
+ }
+
+done:
+ gdImageDestroy(dst);
+ gdImageDestroy(src);
+
+ return error;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.png
new file mode 100644
index 00000000000..18302817297
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt
new file mode 100644
index 00000000000..e0656ef6a8e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagecopymergegray
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am
new file mode 100644
index 00000000000..6856d750579
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecopymergegray/gdimagecopymergegray
+endif
+
+EXTRA_DIST += \
+ gdimagecopymergegray/CMakeLists.txt \
+ gdimagecopymergegray/gdimagecopymergegray_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c
new file mode 100644
index 00000000000..34a8923a708
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c
@@ -0,0 +1,38 @@
+/**
+ * Basic test for gdImageCopyMergeGray()
+ */
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr dst = NULL;
+ gdImagePtr src = NULL;
+ int error = 0;
+
+ dst = gdImageCreate(100, 100);
+ src = gdImageCreate(50, 50);
+
+ if (gdTestAssert(!dst)) {
+ error = 1;
+ goto done;
+ }
+ if (gdTestAssert(!src)) {
+ error = 1;
+ goto done;
+ }
+
+ gdImageColorAllocate(src, 255, 255, 255);
+ gdImageColorAllocate(dst, 0, 0, 0);
+ gdImageCopyMergeGray(dst, src, 25, 25, 0, 0, 50, 50, 50);
+
+ if (!gdAssertImageEqualsToFile("gdimagecopymergegray/gdimagecopymergegray_exp.png", dst)) {
+ error = 1;
+ }
+
+done:
+ gdImageDestroy(dst);
+ gdImageDestroy(src);
+
+ return error;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.png
new file mode 100644
index 00000000000..18302817297
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
index 4d0d66ba436..00351ca4c70 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
@@ -1,8 +1,10 @@
+LIST(APPEND TESTS_FILES
+ exact_alpha
+)
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
basic
basic_alpha
- exact_alpha
bug00201
)
ENDIF(PNG_FOUND)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
index 5d0d714e8bb..d42eab559c2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
@@ -1,8 +1,10 @@
+libgd_test_programs += \
+ gdimagecopyresampled/exact_alpha
+
if HAVE_LIBPNG
libgd_test_programs += \
gdimagecopyresampled/basic \
gdimagecopyresampled/basic_alpha \
- gdimagecopyresampled/exact_alpha \
gdimagecopyresampled/bug00201
endif
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
index 053b6db3b72..0287267e6f2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
@@ -48,23 +48,23 @@ int main()
fp = gdTestFileOpen2("gdimagecopyresampled", "bug00201_src.png");
logo_source = gdImageCreateFromPng(fp);
fclose(fp);
-
+
logo = blank_image(SRC_WIDTH,SRC_HEIGHT);
gdImageAlphaBlending(logo, 0);
gdImageCopy(logo, logo_source, 0,0, 0,0, SRC_WIDTH,SRC_HEIGHT);
gdImageDestroy(logo_source);
-
+
scaled_logo = blank_image(DEST_WIDTH,DEST_HEIGHT);
gdImageAlphaBlending(scaled_logo, 0);
gdImageCopyResampled(scaled_logo, logo, 0,0, 0,0, 200,105, SRC_WIDTH,SRC_HEIGHT);
gdImageDestroy(logo);
-
+
layers[0] = background;
layers[1] = scaled_logo;
img = flatten(layers, 2, DEST_WIDTH, DEST_HEIGHT);
gdImageDestroy(background);
gdImageDestroy(scaled_logo);
-
+
gdAssertImageEqualsToFile("gdimagecopyresampled/bug00201_exp.png", img);
gdImageDestroy(img);
return gdNumFailures();
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt
new file mode 100644
index 00000000000..78b4fa9aab4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagecopyresized
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am
new file mode 100644
index 00000000000..9d83e40052f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagecopyresized/gdimagecopyresized
+endif
+
+EXTRA_DIST += \
+ gdimagecopyresized/CMakeLists.txt \
+ gdimagecopyresized/gdimagecopyresized_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c
new file mode 100644
index 00000000000..137f84b2146
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c
@@ -0,0 +1,35 @@
+/**
+ * add test case for gdImageCopyResized
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr src;
+ gdImagePtr dst;
+ gdImagePtr dst_tc;
+
+ /* We prepare two image type: Palette and True Color */
+ /* src image is white, while dst and dst_tc is black */
+ src = gdImageCreate(64, 64);
+ gdImageColorAllocate(src, 255, 255, 255);
+ dst = gdImageCreate(128, 128);
+ gdImageColorAllocate(dst, 0, 0, 0);
+ dst_tc = gdImageCreateTrueColor(128, 128);
+
+ /* Copy src to two image type separately */
+ /* We copy src to the center of dst and dst_tc */
+ gdImageCopyResized(dst, src, 32, 32, 0, 0, 64, 64, 64, 64);
+ gdImageCopyResized(dst_tc, src, 32, 32, 0, 0, 64, 64, 64, 64);
+
+ gdAssertImageEqualsToFile("gdimagecopyresized/gdimagecopyresized_exp.png", dst);
+ gdAssertImageEqualsToFile("gdimagecopyresized/gdimagecopyresized_exp.png", dst_tc);
+
+ gdImageDestroy(src);
+ gdImageDestroy(dst);
+ gdImageDestroy(dst_tc);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.png
new file mode 100644
index 00000000000..32fa084520a
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
index 905e79c52e2..1cd0c1a6033 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
@@ -1,4 +1,4 @@
-SET(TESTS_FILES
+LIST(APPEND TESTS_FILES
bug00340
)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
index 14129ab8660..9c6eff3ad64 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
@@ -5,29 +5,25 @@
* triggering an appropriate warning.
*/
-
#include <string.h>
#include "gd.h"
#include "gd_errors.h"
#include "gdtest.h"
-
#define MSG "product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n"
-
void error_handler(int priority, const char *format, ...)
{
- gdTestAssert(priority == GD_WARNING);
- gdTestAssert(!strcmp(format, MSG));
+ gdTestAssert(priority == GD_WARNING);
+ gdTestAssert(!strcmp(format, MSG));
}
-
int main()
{
- gdImagePtr im;
+ gdImagePtr im;
- im = gdImageCreate(64970, 65111);
- gdTestAssert(im == NULL);
+ im = gdImageCreate(64970, 65111);
+ gdTestAssert(im == NULL);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
index 4b1e97e292c..43f6f6c14cd 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
@@ -1,6 +1,10 @@
-SET(TESTS_FILES
+LIST(APPEND TESTS_FILES
bug00297
+ bug00432
+ bug00485_auto
+ bug00485_threshold
php_bug_72494
+ bug00486
)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
index fe73c1de929..1725f6cbc5f 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
@@ -1,5 +1,9 @@
libgd_test_programs += \
gdimagecrop/bug00297 \
+ gdimagecrop/bug00432 \
+ gdimagecrop/bug00485_auto \
+ gdimagecrop/bug00485_threshold \
+ gdimagecrop/bug00486 \
gdimagecrop/php_bug_72494
EXTRA_DIST += \
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c
new file mode 100644
index 00000000000..d3f681f9857
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c
@@ -0,0 +1,45 @@
+/**
+ * Test that gdImageCrop() retains transparency
+ *
+ * We create an image with transparent pixels, crop the image, and check whether
+ * all pixels are identical to the respective source image.
+ *
+ * See <https://github.com/libgd/libgd/issues/432>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+#define WIDTH 10
+#define HEIGHT 10
+#define XOFF 1
+#define YOFF 1
+
+
+int main()
+{
+ gdImagePtr src, dst;
+ gdRect crop = {XOFF, YOFF, WIDTH-XOFF-1, HEIGHT-YOFF-1};
+ int i, j;
+
+ src = gdImageCreateTrueColor(WIDTH, HEIGHT);
+ gdImageAlphaBlending(src, gdEffectReplace);
+ gdImageFilledRectangle(src, 0, 0, WIDTH-1, HEIGHT-1,
+ gdTrueColorAlpha(gdRedMax, gdGreenMax, gdBlueMax, gdAlphaMax));
+
+ dst = gdImageCrop(src, &crop);
+ gdTestAssert(dst != NULL);
+
+ for (i = 0; i < gdImageSX(dst); i++) {
+ for (j = 0; j < gdImageSY(dst); j++) {
+ gdTestAssert(gdImageGetPixel(dst, i, j) == gdImageGetPixel(src, i+XOFF, j+YOFF));
+ }
+ }
+
+ gdImageDestroy(src);
+ gdImageDestroy(dst);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c
new file mode 100644
index 00000000000..3c0627e49d8
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c
@@ -0,0 +1,52 @@
+/**
+ * Test that gdImageCropAuto() works pixel precise
+ *
+ * We test that a single black pixel anywhere (but the corners) on an 8x8 pixel
+ * image with a white background is auto-cropped to a 1x1 pixel image with a
+ * black pixel.
+ *
+ * See <https://github.com/libgd/libgd/issues/485>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+gdImagePtr createWhiteImageWithBlackPixelAt(int x, int y)
+{
+ gdImagePtr im = gdImageCreateTrueColor(8, 8);
+ gdImageFilledRectangle(im, 0, 0, 7, 7, 0xffffff);
+ gdImageSetPixel(im, x, y, 0x000000);
+ return im;
+}
+
+
+int main()
+{
+ int x, y, height, width, color;
+ gdImagePtr orig, cropped;
+
+ for (y = 0; y < 8; y++) {
+ for (x = 0; x < 8; x++) {
+ if ((x == 0 && (y == 0 || y == 7)) || (x == 7 && (y == 0 || y == 7))) {
+ continue; // skip the corners
+ }
+ orig = createWhiteImageWithBlackPixelAt(x, y);
+ cropped = gdImageCropAuto(orig, GD_CROP_SIDES);
+ gdTestAssertMsg(cropped != NULL, "Pixel at %d, %d: unexpected NULL crop\n", x, y);
+ if (cropped) {
+ width = gdImageSX(cropped);
+ gdTestAssertMsg(width == 1, "Pixel at %d, %d: unexpected width (%d)\n", x, y, width);
+ height = gdImageSY(cropped);
+ gdTestAssertMsg(height == 1, "Pixel at %d, %d: unexpected height (%d)\n", x, y, height);
+ color = gdImageGetPixel(cropped, 0, 0);
+ gdTestAssertMsg(color == 0x000000, "Pixel at %d, %d: unexpected color (%d)\n", x, y, color);
+ gdImageDestroy(cropped);
+ }
+ gdImageDestroy(orig);
+ }
+ }
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c
new file mode 100644
index 00000000000..31ac38f1577
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c
@@ -0,0 +1,48 @@
+/**
+ * Test that gdImageCropThreshold() works pixel precise
+ *
+ * We test that a single black pixel anywhere on an 8x8 pixel image with a white
+ * background is threshold-cropped to a 1x1 pixel image with a black pixel.
+ *
+ * See <https://github.com/libgd/libgd/issues/485>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+gdImagePtr createWhiteImageWithBlackPixelAt(int x, int y)
+{
+ gdImagePtr im = gdImageCreateTrueColor(8, 8);
+ gdImageFilledRectangle(im, 0, 0, 7, 7, 0xffffff);
+ gdImageSetPixel(im, x, y, 0x000000);
+ return im;
+}
+
+
+int main()
+{
+ int x, y, height, width, color;
+ gdImagePtr orig, cropped;
+
+ for (y = 0; y < 8; y++) {
+ for (x = 0; x < 8; x++) {
+ orig = createWhiteImageWithBlackPixelAt(x, y);
+ cropped = gdImageCropThreshold(orig, 0xffffff, 1.0);
+ gdTestAssertMsg(cropped != NULL, "Pixel at %d, %d: unexpected NULL crop\n", x, y);
+ if (cropped) {
+ width = gdImageSX(cropped);
+ gdTestAssertMsg(width == 1, "Pixel at %d, %d: unexpected width (%d)\n", x, y, width);
+ height = gdImageSY(cropped);
+ gdTestAssertMsg(height == 1, "Pixel at %d, %d: unexpected height (%d)\n", x, y, height);
+ color = gdImageGetPixel(cropped, 0, 0);
+ gdTestAssertMsg(color == 0x000000, "Pixel at %d, %d: unexpected color (%d)\n", x, y, color);
+ gdImageDestroy(cropped);
+ }
+ gdImageDestroy(orig);
+ }
+ }
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c
new file mode 100644
index 00000000000..289d88fe596
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c
@@ -0,0 +1,48 @@
+/**
+ * Test that gdImageCropAuto() crops left and right as well
+ *
+ * We test that an image with four unicolored quadrants, where either both left
+ * quadrants or both right quadrants have the same color, but the remaining
+ * quadrants have different colors, are treated identically by
+ * gdImageCropAuto(…, GD_CROP_SIDES).
+ *
+ * See <https://github.com/libgd/libgd/issues/486>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr orig, croppedLeft, croppedRight;
+ int red, green, blue;
+
+ orig = gdImageCreateTrueColor(8, 8);
+ red = gdImageColorAllocate(orig, 255, 0, 0);
+ green = gdImageColorAllocate(orig, 0, 255, 0);
+ blue = gdImageColorAllocate(orig, 0, 0, 255);
+
+ gdImageFilledRectangle(orig, 0, 0, 3, 3, green); // tl
+ gdImageFilledRectangle(orig, 4, 0, 7, 3, red); // tr
+ gdImageFilledRectangle(orig, 0, 4, 3, 7, green); // bl
+ gdImageFilledRectangle(orig, 4, 4, 7, 7, blue); // br
+ croppedLeft = gdImageCropAuto(orig, GD_CROP_SIDES);
+ gdTestAssert(croppedLeft != NULL);
+
+ gdImageFilledRectangle(orig, 0, 0, 3, 3, red); // tl
+ gdImageFilledRectangle(orig, 4, 0, 7, 3, green); // tr
+ gdImageFilledRectangle(orig, 0, 4, 3, 7, blue); // bl
+ gdImageFilledRectangle(orig, 4, 4, 7, 7, green); // br
+ croppedRight = gdImageCropAuto(orig, GD_CROP_SIDES);
+ gdTestAssert(croppedRight != NULL);
+
+ gdAssertImageEquals(croppedRight, croppedLeft);
+
+ gdImageDestroy(orig);
+ gdImageDestroy(croppedLeft);
+ gdImageDestroy(croppedRight);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt
new file mode 100644
index 00000000000..b7d79f2cd8b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ bug00169
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am
new file mode 100644
index 00000000000..11d207902b0
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimageellipse/bug00169
+endif
+
+EXTRA_DIST += \
+ gdimageellipse/CMakeLists.txt \
+ gdimageellipse/bug00169_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c
new file mode 100644
index 00000000000..8246c8c6394
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c
@@ -0,0 +1,22 @@
+/**
+ * add test case for gdImageEllipse
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ int white = 0;
+
+ im = gdImageCreateTrueColor(2200, 2200);
+ white = gdImageColorAllocate(im, 255, 255, 255);
+
+ gdImageEllipse(im, 1100, 1100, 2200, 2200, white);
+ gdAssertImageEqualsToFile("gdimageellipse/bug00169_exp.png", im);
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.png
new file mode 100644
index 00000000000..f844608ab8f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
index df86097df95..8c9e4d53913 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
@@ -1,9 +1,11 @@
if HAVE_LIBTIFF
if HAVE_LIBWEBP
+if ENABLE_GD_FORMATS
libgd_test_programs += \
gdimagefile/gdnametest
endif
endif
+endif
EXTRA_DIST += \
gdimagefile/CMakeLists.txt \
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
index 2b3cc322c45..fcd040adbec 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
@@ -11,149 +11,145 @@
#define LY (HEIGHT/2) // Line Y
#define HT 2 // Half of line-thickness
-
-gdImagePtr mkwhite(int x, int y)
+static gdImagePtr
+mkwhite(int x, int y)
{
- gdImagePtr im;
+ gdImagePtr im;
im = gdImageCreateTrueColor(x, y);
gdImageFilledRectangle(im, 0, 0, x-1, y-1,
- gdImageColorExactAlpha(im, 255, 255, 255, 0));
+ gdImageColorExactAlpha(im, 255, 255, 255, 0));
- gdTestAssert(im != NULL);
+ gdTestAssert(im != NULL);
- gdImageSetInterpolationMethod(im, GD_BICUBIC); // FP interp'n
+ gdImageSetInterpolationMethod(im, GD_BICUBIC); // FP interp'n
- return im;
+ return im;
}/* mkwhite*/
+static gdImagePtr
+mkcross(void)
+{
+ gdImagePtr im;
+ int fg, n;
-gdImagePtr mkcross() {
- gdImagePtr im;
- int fg, n;
-
- im = mkwhite(WIDTH, HEIGHT);
- fg = gdImageColorAllocate(im, 0, 0, 0);
+ im = mkwhite(WIDTH, HEIGHT);
+ fg = gdImageColorAllocate(im, 0, 0, 0);
- for (n = -HT; n < HT; n++) {
- gdImageLine(im, LX-n, 0, LX-n, HEIGHT-1, fg);
- gdImageLine(im, 0, LY-n, WIDTH-1, LY-n, fg);
- }/* for */
+ for (n = -HT; n < HT; n++) {
+ gdImageLine(im, LX-n, 0, LX-n, HEIGHT-1, fg);
+ gdImageLine(im, 0, LY-n, WIDTH-1, LY-n, fg);
+ }/* for */
- return im;
+ return im;
}/* mkcross*/
-
-
-
-void
-do_test() {
-
- gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n");
- gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n");
-
- int n;
- struct {
- const char *nm; // Filename
- unsigned maxdiff; // Maximum total pixel diff
- int required; // 1 -> image type always supported, -1 -> skip it
- int readonly; // 1 -> gd can only read this type
- } names[] = {
- {"img.png", 0, 0, 0},
- {"img.gif", 5, 1, 0}, // This seems to come from tc<->palette
- {"img.GIF", 5, 1, 0}, // Test for case insensitivity
- {"img.gd", 0, 1, 0},
- {"img.gd2", 0, 0, 0},
- {"img.jpg", 25, 0, 0},
- {"img.jpeg", 25, 0, 0},
- {"img.wbmp", 0, 1, 0},
- {"img.bmp", 0, 1, 0},
- {"img-ref.xpm", 0, 0, 1},
- {"img-ref.xbm", 0, 1, 1},
- {"img-ref.tga", 0, 1, 1},
- {"img.webp", 10, 1, 0},
- {"img.tiff", 0, 1, 0},
-
- {NULL, 0}
- };
-
- for (n = 0; names[n].nm; n++) {
- gdImagePtr orig, copy;
- int status;
- char *full_filename = NULL;
- unsigned int pixels;
-
- /* Some image readers are buggy and crash the program so we
- * skip them. Bug fixers should remove these from the list of
- * skipped items as bugs are fixed. */
- if (names[n].required < 0) {
- printf("Skipping test for '%s'. FIX THIS!\n", names[n].nm);
- continue;
- }/* if */
-
- /* Skip this file if the current library build doesn't support
- * it. (If it's one of the built-in types, *that* a different
- * problem; we assert that here.) */
- if (!gdSupportsFileType(names[n].nm, 0)) {
- gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", names[n].nm);
- continue;
- }/* if */
-
- orig = mkcross();
-
- /* Write the image unless writing is not supported. */
- if (!names[n].readonly) {
- /* Prepend the test directory; this is expected to be run in
- * the parent dir. */
- full_filename = gdTestTempFile(names[n].nm);
- status = gdImageFile(orig, full_filename);
- gdTestAssertMsg(status == GD_TRUE, "Failed to create %s\n", full_filename);
- } else {
- /* Prepend the test directory; this is expected to be run in
- * the parent dir. */
- full_filename = gdTestFilePath2("gdimagefile", names[n].nm);
- }/* if */
-
- copy = gdImageCreateFromFile(full_filename);
- gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename);
- if (!copy) continue;
-
- pixels = gdMaxPixelDiff(orig, copy);
- gdTestAssertMsg(pixels <= names[n].maxdiff, "%u pixels different on %s\n", pixels, full_filename);
-
- if (!names[n].readonly) {
- status = remove(full_filename);
- gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename);
- }/* if */
-
- free(full_filename);
- gdImageDestroy(orig);
- gdImageDestroy(copy);
- }/* for */
+static void
+do_test(void)
+{
+ gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n");
+ gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n");
+
+ int n;
+ struct {
+ const char *nm; // Filename
+ unsigned maxdiff; // Maximum total pixel diff
+ int required; // 1 -> image type always supported, -1 -> skip it
+ int readonly; // 1 -> gd can only read this type
+ } names[] = {
+ {"img.png", 0, 0, 0},
+ {"img.gif", 5, 1, 0}, // This seems to come from tc<->palette
+ {"img.GIF", 5, 1, 0}, // Test for case insensitivity
+ {"img.gd", 0, 1, 0},
+ {"img.gd2", 0, 0, 0},
+ {"img.jpg", 25, 0, 0},
+ {"img.jpeg", 25, 0, 0},
+ {"img.wbmp", 0, 1, 0},
+ {"img.bmp", 0, 1, 0},
+ {"img-ref.xpm", 0, 0, 1},
+ {"img-ref.xbm", 0, 1, 1},
+ {"img-ref.tga", 0, 1, 1},
+ {"img.webp", 10, 1, 0},
+ {"img.tiff", 0, 1, 0},
+
+ {NULL, 0}
+ };
+
+ for (n = 0; names[n].nm; n++) {
+ gdImagePtr orig, copy;
+ int status;
+ char *full_filename = NULL;
+ unsigned int pixels;
+
+ /* Some image readers are buggy and crash the program so we
+ * skip them. Bug fixers should remove these from the list of
+ * skipped items as bugs are fixed. */
+ if (names[n].required < 0) {
+ printf("Skipping test for '%s'. FIX THIS!\n", names[n].nm);
+ continue;
+ }/* if */
+
+ /* Skip this file if the current library build doesn't support
+ * it. (If it's one of the built-in types, *that* a different
+ * problem; we assert that here.) */
+ if (!gdSupportsFileType(names[n].nm, 0)) {
+ gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", names[n].nm);
+ continue;
+ }/* if */
+
+ orig = mkcross();
+
+ /* Write the image unless writing is not supported. */
+ if (!names[n].readonly) {
+ /* Prepend the test directory; this is expected to be run in
+ * the parent dir. */
+ full_filename = gdTestTempFile(names[n].nm);
+ status = gdImageFile(orig, full_filename);
+ gdTestAssertMsg(status == GD_TRUE, "Failed to create %s\n", full_filename);
+ } else {
+ /* Prepend the test directory; this is expected to be run in
+ * the parent dir. */
+ full_filename = gdTestFilePath2("gdimagefile", names[n].nm);
+ }/* if */
+
+ copy = gdImageCreateFromFile(full_filename);
+ gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename);
+ if (!copy) continue;
+
+ pixels = gdMaxPixelDiff(orig, copy);
+ gdTestAssertMsg(pixels <= names[n].maxdiff, "%u pixels different on %s\n", pixels, full_filename);
+
+ if (!names[n].readonly) {
+ status = remove(full_filename);
+ gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename);
+ }/* if */
+
+ free(full_filename);
+ gdImageDestroy(orig);
+ gdImageDestroy(copy);
+ }/* for */
}/* do_test*/
+static void
+do_errortest(void)
+{
+ gdImagePtr im;
-void
-do_errortest() {
- gdImagePtr im;
-
- im = mkcross();
+ im = mkcross();
- gdTestAssert(!gdImageFile(im, "img.xpng"));
- gdTestAssert(!gdImageFile(im, "bobo"));
- gdTestAssert(!gdImageFile(im, "png"));
- gdTestAssert(!gdImageFile(im, ""));
+ gdTestAssert(!gdImageFile(im, "img.xpng"));
+ gdTestAssert(!gdImageFile(im, "bobo"));
+ gdTestAssert(!gdImageFile(im, "png"));
+ gdTestAssert(!gdImageFile(im, ""));
- gdImageDestroy(im);
+ gdImageDestroy(im);
}/* do_errortest*/
-
int main()
{
+ do_test();
+ do_errortest();
- do_test();
- do_errortest();
-
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c
index 752178a4805..3feaf42f68d 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c
@@ -37,4 +37,3 @@ int main()
return error;
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c
index 982ae8f64d4..4edcd6aca7c 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c
@@ -46,4 +46,3 @@ int main()
gdImageDestroy(tile);
return error;
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c
index b11fbc91ccb..1a1929e4205 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c
@@ -51,4 +51,3 @@ int main()
gdImageDestroy(tile);
return error;
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c
index 13247cab4e0..694788a5f86 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c
@@ -8,26 +8,26 @@ int main()
gdImagePtr im, tile;
int tile_red, tile_blue;
int error = 0;
-
+
im = gdImageCreate(200, 150);
tile = gdImageCreateTrueColor(2, 2);
-
+
tile_red = gdImageColorAllocate(tile, 255, 0, 0);
tile_blue = gdImageColorAllocate(tile, 0, 0, 255);
-
+
gdImageSetPixel(tile, 0, 0, tile_red);
gdImageSetPixel(tile, 1, 1, tile_red);
gdImageSetPixel(tile, 1, 0, tile_blue);
gdImageSetPixel(tile, 0, 1, tile_blue);
-
+
gdImageSetTile(im, tile);
gdImageFill(im, 11, 12, gdTiled);
if (!gdAssertImageEqualsToFile("gdimagefill/bug00104_1_exp.png", im)) {
error = 1;
}
-
+
gdImageDestroy(im);
gdImageDestroy(tile);
return error;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
index ba6d28f49a6..4042df931c2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
@@ -1,5 +1,6 @@
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
+ bug00351
php_bug43828
)
ENDIF(PNG_FOUND)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
index 4af6963f86c..710c0a095ee 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
@@ -1,8 +1,10 @@
if HAVE_LIBPNG
libgd_test_programs += \
+ gdimagefilledarc/bug00351 \
gdimagefilledarc/php_bug43828
endif
EXTRA_DIST += \
gdimagefilledarc/CMakeLists.txt \
+ gdimagefilledarc/bug00351_exp.png \
gdimagefilledarc/php_bug43828_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c
new file mode 100644
index 00000000000..20b0fdea308
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c
@@ -0,0 +1,30 @@
+/**
+ * Test drawing of pies starting and/or ending near 90°
+ *
+ * See <https://github.com/libgd/libgd/issues/351>.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr im;
+ int white, navy, red;
+
+ im = gdImageCreateTrueColor(500, 500);
+ white = gdTrueColorAlpha(0xFF, 0xFF, 0xFF, gdAlphaOpaque);
+ navy = gdTrueColorAlpha(0x00, 0x00, 0x80, gdAlphaOpaque);
+ red = gdTrueColorAlpha(0xFF, 0x00, 0x00, gdAlphaOpaque);
+
+ gdImageFilledArc(im, 250, 250, 500, 250, 0, 88, white, gdPie);
+ gdImageFilledArc(im, 250, 250, 500, 250, 88, 91 , navy, gdPie);
+ gdImageFilledArc(im, 250, 250, 500, 250, 91, 360 , red, gdPie);
+
+ gdAssertImageEqualsToFile("gdimagefilledarc/bug00351_exp.png", im);
+
+ gdImageDestroy(im);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.png
new file mode 100644
index 00000000000..16b2db2623e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
index 5fe4edd1ad4..48286e4a5ef 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
@@ -1,6 +1,7 @@
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
bug00010
+ bug00169
bug00191
github_bug_00238
)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
index 6a5185a10c1..0a886868967 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
@@ -1,6 +1,7 @@
if HAVE_LIBPNG
libgd_test_programs += \
gdimagefilledellipse/bug00010 \
+ gdimagefilledellipse/bug00169 \
gdimagefilledellipse/bug00191 \
gdimagefilledellipse/github_bug_00238
endif
@@ -8,5 +9,6 @@ endif
EXTRA_DIST += \
gdimagefilledellipse/CMakeLists.txt \
gdimagefilledellipse/bug00010_exp.png \
+ gdimagefilledellipse/bug00169_exp.png \
gdimagefilledellipse/bug00191.png \
gdimagefilledellipse/github_bug_00238_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c
new file mode 100644
index 00000000000..639e52fc767
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c
@@ -0,0 +1,22 @@
+/**
+ * add test case for gdImageFilledEllipse
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ int white = 0;
+
+ im = gdImageCreateTrueColor(2200, 2200);
+ white = gdImageColorAllocate(im, 255, 255, 255);
+
+ gdImageFilledEllipse(im, 1100, 1100, 2200, 2200, white);
+ gdAssertImageEqualsToFile("gdimagefilledellipse/bug00169_exp.png", im);
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.png
new file mode 100644
index 00000000000..db883907cdc
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c
index 499923fedd3..67c93fd551b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c
@@ -12,7 +12,7 @@ int main()
goto exit;
}
- gdImageAlphaBlending(im, gdEffectNormal);
+ gdImageAlphaBlending(im, gdEffectNormal);
gdImageFilledRectangle(im, 0, 0, 140, 199, gdTrueColorAlpha(0,0,0,127));
gdImageAlphaBlending(im, gdEffectAlphaBlend);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
index ebb1404984d..f9b96dac535 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
@@ -3,29 +3,27 @@
* *currently* using the even-odd fillrule.
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- int black;
- gdPoint points[] = {{50, 5}, {24, 86}, {93, 36}, {7, 36}, {76, 86}};
- char *path;
+ gdImagePtr im;
+ int black;
+ gdPoint points[] = {{50, 5}, {24, 86}, {93, 36}, {7, 36}, {76, 86}};
+ char *path;
- im = gdImageCreate(100, 100);
- gdImageColorAllocate(im, 255, 255, 255);
- black = gdImageColorAllocate(im, 0, 0, 0);
+ im = gdImageCreate(100, 100);
+ gdImageColorAllocate(im, 255, 255, 255);
+ black = gdImageColorAllocate(im, 0, 0, 0);
- gdImageFilledPolygon(im, points, 5, black);
+ gdImageFilledPolygon(im, points, 5, black);
- path = gdTestFilePath2("gdimagefilledpolygon", "self_intersecting_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("gdimagefilledpolygon", "self_intersecting_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c
index 594e29637d7..87e33dc3a22 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c
@@ -24,4 +24,3 @@ int main()
return 1;
}
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c
index adf244ebca2..4cde69867ee 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c
@@ -36,4 +36,3 @@ int main()
gdImageDestroy(im);
return 0;
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c
index 24f5ceb9327..a6f5c06959b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c
@@ -24,4 +24,3 @@ int main()
return 1;
}
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
index fcf18f1a2e5..29502352ad3 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
@@ -1,8 +1,6 @@
-IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
bug00037
github_bug_215
)
-ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am
index fc7ed3d05d6..779bda0565b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am
@@ -1,8 +1,6 @@
-if HAVE_LIBPNG
libgd_test_programs += \
gdimagefilltoborder/bug00037 \
gdimagefilltoborder/github_bug_215
-endif
EXTRA_DIST += \
gdimagefilltoborder/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
index ab7e1b805bf..72e58b7fe64 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
@@ -27,4 +27,3 @@ int main()
}
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
index dee2f1f8d52..aec49f51eb9 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
@@ -143,7 +143,7 @@ void do_crosstest()
{
gdImagePtr im = mkcross();
gdImagePtr blurred;
- const int RADIUS = 16;
+ const int RADIUS = 16;
gdTestAssert(!!im);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c b/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
index a29e50e18f2..da834eeda65 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
@@ -2,36 +2,33 @@
* Testing the basic operation of the gdImageFlip*() functions
*/
-
#include "gd.h"
#include "gdtest.h"
-
static void test_flip(void (BGD_STDCALL *func)(gdImagePtr), const char *filename)
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("gdimageflip", "remi.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimageflip", "remi.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- func(im);
+ func(im);
- path = gdTestFilePath2("gdimageflip", filename);
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("gdimageflip", filename);
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
}
-
int main()
{
- test_flip(gdImageFlipVertical, "gdimageflipvertical_exp.png");
- test_flip(gdImageFlipHorizontal, "gdimagefliphorizontal_exp.png");
- test_flip(gdImageFlipBoth, "gdimageflipboth_exp.png");
+ test_flip(gdImageFlipVertical, "gdimageflipvertical_exp.png");
+ test_flip(gdImageFlipHorizontal, "gdimagefliphorizontal_exp.png");
+ test_flip(gdImageFlipBoth, "gdimageflipboth_exp.png");
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
index 40b4201944a..3ecc482366d 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
@@ -2,28 +2,26 @@
* Basic test for gdImageGrayScale()
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("gdimagegrayscale", "basic.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimagegrayscale", "basic.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- gdImageGrayScale(im);
+ gdImageGrayScale(im);
- path = gdTestFilePath2("gdimagegrayscale", "basic_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("gdimagegrayscale", "basic_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
index 5b6d048130a..2e68ed4d051 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
@@ -47,5 +47,7 @@ int main()
}
}
+ gdImageDestroy(im);
+
return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
index 1f8c419a682..c345ed1426e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
@@ -7,6 +7,7 @@ LIST(APPEND TESTS_FILES
bug00077
bug00072
bug00111
+ bug00315
gdimageline_aa
gdimageline_bug5
gdImageAALine_thickness
@@ -14,4 +15,4 @@ LIST(APPEND TESTS_FILES
)
ENDIF(PNG_FOUND)
-ADD_GD_TESTS(m)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
index 3b541a16a9a..9c104da2d5e 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
@@ -6,6 +6,7 @@ libgd_test_programs += \
gdimageline/bug00072 \
gdimageline/bug00077 \
gdimageline/bug00111 \
+ gdimageline/bug00315 \
gdimageline/gdimageline_aa \
gdimageline/gdimageline_bug5 \
gdimageline/gdImageAALine_thickness \
@@ -17,6 +18,7 @@ EXTRA_DIST += \
gdimageline/bug00072_exp.png \
gdimageline/bug00077_exp.png \
gdimageline/bug00111_exp.png \
+ gdimageline/bug00315_exp.png \
gdimageline/gdimageline_aa_a_1_exp.png \
gdimageline/gdimageline_aa_b_0_exp.png \
gdimageline/gdimageline_aa_c_0_exp.png \
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c
new file mode 100644
index 00000000000..719d155e0ba
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c
@@ -0,0 +1,37 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/315>
+ *
+ * We're testing that a single-pointed gdImageAALine() is drawn as a single
+ * non-antialized pixel, according to (two-pointed) vertical and horizontal
+ * lines.
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ int white, black;
+ char *path;
+
+ im = gdImageCreateTrueColor(6, 6);
+ white = gdImageColorAllocate(im, 255, 255, 255);
+ black = gdImageColorAllocate(im, 0, 0, 0);
+ gdImageFilledRectangle(im, 0,0, 5,5, white);
+
+ gdImageLine(im, 4,4, 4,4, black);
+ gdImageLine(im, 1,4, 2,4, black);
+ gdImageLine(im, 4,1, 4,2, black);
+
+ gdImageSetAntiAliased(im, black);
+ gdImageLine(im, 1,1, 1,1, gdAntiAliased);
+
+ path = gdTestFilePath2("gdimageline", "bug00315_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.png
new file mode 100644
index 00000000000..a6b2d850597
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
index f8dafc8ea23..563eec60d33 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
@@ -2,28 +2,26 @@
* Basic test for gdImageNegate()
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("gdimagenegate", "basic.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimagenegate", "basic.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- gdImageNegate(im);
+ gdImageNegate(im);
- path = gdTestFilePath2("gdimagenegate", "basic_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("gdimagenegate", "basic_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
index 047ac8f446e..f8e6646d05b 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
@@ -27,28 +27,28 @@ static const int expected_average[][3] = {
} \
} while (0)
-#define CHECK_PIXELS(im, expected) do { \
- int x, y; \
- for (y = 0; y < (im)->sy; y++) { \
- for (x = 0; x < (im)->sx; x++) { \
- int p = gdImageGetPixel(im, x, y); \
- int r = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>>16)&0xFF; \
- int g = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>> 8)&0xFF; \
- int b = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE] )&0xFF; \
- if (r != gdImageRed(im, p)) { \
+#define CHECK_PIXELS(im, expected) do { \
+ int x, y; \
+ for (y = 0; y < (im)->sy; y++) { \
+ for (x = 0; x < (im)->sx; x++) { \
+ int p = gdImageGetPixel(im, x, y); \
+ int r = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>>16)&0xFF; \
+ int g = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>> 8)&0xFF; \
+ int b = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE] )&0xFF; \
+ if (r != gdImageRed(im, p)) { \
gdTestErrorMsg("Red %x is expected, but %x\n", r, gdImageRed(im, p)); \
- return 0; \
- } \
- if (g != gdImageGreen(im, p)) { \
+ return 0; \
+ } \
+ if (g != gdImageGreen(im, p)) { \
gdTestErrorMsg("Green %x is expected, but %x\n", g, gdImageGreen(im, p)); \
- return 0; \
- } \
- if (b != gdImageBlue(im, p)) { \
+ return 0; \
+ } \
+ if (b != gdImageBlue(im, p)) { \
gdTestErrorMsg("Blue %x is expected, but %x\n", b, gdImageBlue(im, p)); \
- return 0; \
- } \
- } \
- } \
+ return 0; \
+ } \
+ } \
+ } \
} while (0)
static int testPixelate(gdImagePtr im)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c
index 6519342041f..9fd18aad8f8 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c
@@ -40,13 +40,6 @@ int main() {
error |=1;
}
}
-
- if (gdImageGetPixel(im, xs -1, 95) != white) {
- error |=1;
- }
- if (gdImageGetPixel(im, xe +1, 95) != white) {
- error |=1;
- }
gdImageDestroy(im);
return error;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
index b2ea4ed1735..704b3bd35b2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
@@ -1,7 +1,7 @@
/**
* Test point ordering of gdImageRectangle()
*
- * We're testing the two allowed point orders with and without thickness,
+ * We're testing all four possible point orders with and without thickness,
* and verify that all sides of the rectangle are drawn.
*
* See also <https://github.com/libgd/libgd/issues/177>
@@ -27,10 +27,14 @@ int main()
red = gdImageColorAllocate(im, 255, 0, 0);
draw_and_check_rectangle(im, 10, 10, 50, 50, black, red);
+ draw_and_check_rectangle(im, 50, 60, 10, 100, black, red);
draw_and_check_rectangle(im, 50, 150, 10, 110, black, red);
+ draw_and_check_rectangle(im, 10, 200, 50, 160, black, red);
gdImageSetThickness(im, 4);
draw_and_check_rectangle(im, 60, 10, 100, 50, black, red);
+ draw_and_check_rectangle(im, 100, 60, 60, 100, black, red);
draw_and_check_rectangle(im, 100, 150, 60, 110, black, red);
+ draw_and_check_rectangle(im, 60, 200, 100, 160, black, red);
#if 0
/* save image for debugging purposes */
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
index 01957c5905c..7b8ab14b35a 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
@@ -1,11 +1,6 @@
IF(PNG_FOUND)
-IF(JPEG_FOUND)
LIST(APPEND TESTS_FILES
bug00067
-)
-ENDIF(JPEG_FOUND)
-
-LIST(APPEND TESTS_FILES
php_bug_64898
php_bug_65070
)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
index 9d375f39b9e..116c851b432 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
@@ -1,10 +1,6 @@
if HAVE_LIBPNG
-if HAVE_LIBJPEG
-libgd_test_programs += \
- gdimagerotate/bug00067
-endif
-
libgd_test_programs += \
+ gdimagerotate/bug00067 \
gdimagerotate/php_bug_64898 \
gdimagerotate/php_bug_65070
endif
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
index 0bf34a3d78e..87a43ea2e7c 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
@@ -5,11 +5,9 @@
* color.
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
gdImagePtr src, dst;
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
index fba85f6f06f..64b8b1095b7 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
index bc505c12935..67a15618879 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
@@ -6,48 +6,45 @@
* expected color.
*/
-
#include <string.h>
#include "gd.h"
#include "gdtest.h"
-
static void test(const char *mode)
{
- gdImagePtr src, dst;
- int expected, actual;
-
- if (strcmp(mode, "palette")) {
- src = gdImageCreateTrueColor(100, 100);
- expected = gdTrueColorAlpha(255, 255, 255, gdAlphaOpaque);
- gdImageFilledRectangle(src, 0,0, 99,99, expected);
- } else {
- src = gdImageCreate(100, 100);
- gdImageColorAllocate(src, 255, 255, 255);
- expected = gdImageGetTrueColorPixel(src, 49, 49);
- }
-
- gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
- dst = gdImageScale(src, 200, 200);
-
- actual = gdImageGetPixel(dst, 0, 0);
- gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
- actual = gdImageGetPixel(dst, 0, 199);
- gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
- actual = gdImageGetPixel(dst, 199, 199);
- gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
- actual = gdImageGetPixel(dst, 199, 0);
- gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
-
- gdImageDestroy(src);
- gdImageDestroy(dst);
+ gdImagePtr src, dst;
+ int expected, actual;
+
+ if (strcmp(mode, "palette")) {
+ src = gdImageCreateTrueColor(100, 100);
+ expected = gdTrueColorAlpha(255, 255, 255, gdAlphaOpaque);
+ gdImageFilledRectangle(src, 0,0, 99,99, expected);
+ } else {
+ src = gdImageCreate(100, 100);
+ gdImageColorAllocate(src, 255, 255, 255);
+ expected = gdImageGetTrueColorPixel(src, 49, 49);
+ }
+
+ gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
+ dst = gdImageScale(src, 200, 200);
+
+ actual = gdImageGetPixel(dst, 0, 0);
+ gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
+ actual = gdImageGetPixel(dst, 0, 199);
+ gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
+ actual = gdImageGetPixel(dst, 199, 199);
+ gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
+ actual = gdImageGetPixel(dst, 199, 0);
+ gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
+
+ gdImageDestroy(src);
+ gdImageDestroy(dst);
}
-
int main()
{
- test("palette");
- test("truecolor");
+ test("palette");
+ test("truecolor");
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
index 0c9d10c9139..44ba2f473fd 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
@@ -5,28 +5,26 @@
* has the expected color value.
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr src, dst;
- int color;
+ gdImagePtr src, dst;
+ int color;
- src = gdImageCreate(100, 100);
- gdImageColorAllocate(src, 255, 255, 255);
+ src = gdImageCreate(100, 100);
+ gdImageColorAllocate(src, 255, 255, 255);
- gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
- dst = gdImageScale(src, 200, 200);
+ gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
+ dst = gdImageScale(src, 200, 200);
- color = gdImageGetPixel(dst, 99, 99);
- gdTestAssertMsg(color == 0xffffff,
- "expected color ffffff, but got %x\n", color);
+ color = gdImageGetPixel(dst, 99, 99);
+ gdTestAssertMsg(color == 0xffffff,
+ "expected color ffffff, but got %x\n", color);
- gdImageDestroy(src);
- gdImageDestroy(dst);
+ gdImageDestroy(src);
+ gdImageDestroy(dst);
- return 0;
+ return 0;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c
index 0a8503b745f..20cda1d03e2 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c
@@ -15,13 +15,14 @@ int main()
return 1;
}
gdImageSetInterpolationMethod(im, GD_BELL);
-
+
/* here the call may pass if the system has enough memory (physical or swap)
or fails (overflow check or alloc fails.
in both cases the tests pass */
im2 = gdImageScale(im,0x15555556, 1);
if (im2 == NULL) {
printf("gdImageScale failed, expected (out of memory or overflow validation\n");
+ gdImageDestroy(im);
return 0;
}
gdImageDestroy(im);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt
new file mode 100644
index 00000000000..655106266cd
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+ github_bug_00584
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am
new file mode 100644
index 00000000000..1b833367e5e
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+ gdimagesetinterpolationmethod/github_bug_00584
+
+EXTRA_DIST += \
+ gdimagesetinterpolationmethod/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c
new file mode 100644
index 00000000000..e11f9f06331
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c
@@ -0,0 +1,31 @@
+/**
+ * Test that gdImageSetInterpolationMethod(im, GD_DEFAULT) is consistent
+ *
+ * See <https://github.com/libgd/libgd/issues/584>
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr im;
+ gdInterpolationMethod old_m, new_m;
+ interpolation_method old_f, new_f;
+
+ im = gdImageCreateTrueColor(8, 8);
+ gdTestAssert(im != NULL);
+ gdTestAssert(gdImageSetInterpolationMethod(im, GD_SINC));
+ old_m = gdImageGetInterpolationMethod(im);
+ gdTestAssert(old_m == GD_SINC);
+ old_f = im->interpolation;
+ gdTestAssert(gdImageSetInterpolationMethod(im, GD_DEFAULT));
+ new_m = gdImageGetInterpolationMethod(im);
+ gdTestAssert(new_m == GD_LINEAR);
+ new_f = im->interpolation;
+ gdTestAssert(new_m != old_m);
+ gdTestAssert(new_f != old_f);
+ gdImageDestroy(im);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
index 9874df659d9..f182d59f124 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
@@ -2,53 +2,51 @@
* Testing all effects
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- int effects[] = {
- gdEffectReplace, gdEffectAlphaBlend, gdEffectNormal,
- gdEffectOverlay, gdEffectMultiply
- };
- int red[3], blue[3];
- int x, y, i, j;
- char *path;
-
- red[0] = gdTrueColorAlpha(0, 0, 255, 127);
- red[1] = gdTrueColorAlpha(0, 0, 255, 63);
- red[2] = gdTrueColorAlpha(0, 0, 255, 0);
- blue[0] = gdTrueColorAlpha(255, 0, 0, 127);
- blue[1] = gdTrueColorAlpha(255, 0, 0, 63);
- blue[2] = gdTrueColorAlpha(255, 0, 0, 0);
-
- im = gdImageCreateTrueColor(120, 180);
-
- gdImageAlphaBlending(im, gdEffectReplace);
- for (j = 0; j < 3; j++) {
- y = 60 * j;
- gdImageFilledRectangle(im, 0,y, 119,y+59, red[j]);
- }
-
- for (i = 0; i < 5; i++) {
- x = 20 * i;
- gdImageAlphaBlending(im, effects[i]);
- for (j = 0; j < 9; j++) {
- y = 20 * j;
- gdImageFilledRectangle(im, x+20,y, x+39,y+19, blue[j % 3]);
- }
- }
-
- gdImageSaveAlpha(im, 1);
-
- path = gdTestFilePath2("gdimagesetpixel", "alphablending_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
-
- gdImageDestroy(im);
-
- return gdNumFailures();
+ gdImagePtr im;
+ int effects[] = {
+ gdEffectReplace, gdEffectAlphaBlend, gdEffectNormal,
+ gdEffectOverlay, gdEffectMultiply
+ };
+ int red[3], blue[3];
+ int x, y, i, j;
+ char *path;
+
+ red[0] = gdTrueColorAlpha(0, 0, 255, 127);
+ red[1] = gdTrueColorAlpha(0, 0, 255, 63);
+ red[2] = gdTrueColorAlpha(0, 0, 255, 0);
+ blue[0] = gdTrueColorAlpha(255, 0, 0, 127);
+ blue[1] = gdTrueColorAlpha(255, 0, 0, 63);
+ blue[2] = gdTrueColorAlpha(255, 0, 0, 0);
+
+ im = gdImageCreateTrueColor(120, 180);
+
+ gdImageAlphaBlending(im, gdEffectReplace);
+ for (j = 0; j < 3; j++) {
+ y = 60 * j;
+ gdImageFilledRectangle(im, 0,y, 119,y+59, red[j]);
+ }
+
+ for (i = 0; i < 5; i++) {
+ x = 20 * i;
+ gdImageAlphaBlending(im, effects[i]);
+ for (j = 0; j < 9; j++) {
+ y = 20 * j;
+ gdImageFilledRectangle(im, x+20,y, x+39,y+19, blue[j % 3]);
+ }
+ }
+
+ gdImageSaveAlpha(im, 1);
+
+ path = gdTestFilePath2("gdimagesetpixel", "alphablending_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt
new file mode 100644
index 00000000000..a8c9430b5c7
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagesquaretocircle
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am
new file mode 100644
index 00000000000..5b303000756
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am
@@ -0,0 +1,6 @@
+libgd_test_programs += \
+ gdimagesquaretocircle/gdimagesquaretocircle
+
+EXTRA_DIST += \
+ gdimagesquaretocircle/CMakeLists.txt \
+ gdimagesquaretocircle/gdimagesquaretocircle_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c
new file mode 100644
index 00000000000..f8fba91d384
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c
@@ -0,0 +1,32 @@
+/**
+ * Basic test for gdImageSquareToCircle()
+ */
+#include "gd.h"
+#include "gdfx.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im1, im2;
+ int white;
+ int black;
+
+ im1 = gdImageCreateTrueColor(128, 128);
+ white = gdImageColorAllocate(im1, 255, 255, 255);
+ black = gdImageColorAllocate(im1, 0, 0, 0);
+ gdImageFilledRectangle(im1, 0, 0, 127, 127, white);
+
+ /* Draw a cross line in the middle of im1 */
+ /* The horizonal line will become a circle in im2 */
+ /* The vertical line will become a horizonal with half len in im2 */
+ gdImageLine(im1, 0, 63, 127, 63, black);
+ gdImageLine(im1, 63, 0, 63, 127, black);
+ im2 = gdImageSquareToCircle(im1, 64);
+
+ gdAssertImageEqualsToFile("gdimagesquaretocircle/gdimagesquaretocircle_exp.png", im2);
+
+ gdImageDestroy(im1);
+ gdImageDestroy(im2);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.png
new file mode 100644
index 00000000000..222bb13f6fa
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt
new file mode 100644
index 00000000000..3cabaec548b
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagestring
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am
new file mode 100644
index 00000000000..84ca656555f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagestring/gdimagestring
+endif
+
+EXTRA_DIST += \
+ gdimagestring/CMakeLists.txt \
+ gdimagestring/gdimagestring_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c
new file mode 100644
index 00000000000..c4b4aa1e898
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c
@@ -0,0 +1,34 @@
+/**
+ * Base test for gdImageString()
+ */
+#include <gd.h>
+#include <gdfontl.h>
+#include "gdtest.h"
+#include <string.h>
+
+int main()
+{
+ /* Declare the image */
+ gdImagePtr im = NULL;
+ char *s = "Hello gd";
+ int foreground = 0;
+ int error = 0;
+ gdFontPtr fontptr = gdFontGetLarge();
+
+ im = gdImageCreate(100, 50);
+ gdImageColorAllocate(im, 202, 202, 0);
+ foreground = gdImageColorAllocate(im, 22, 4, 238);
+
+ gdImageString(im, fontptr,
+ im->sx / 2 - (strlen(s) * fontptr->w / 2),
+ im->sy / 2 - fontptr->h / 2,
+ (unsigned char*)s, foreground);
+
+ if (!gdAssertImageEqualsToFile("gdimagestring/gdimagestring_exp.png", im))
+ error= 1;
+
+ /* Destroy the image in memory. */
+ gdImageDestroy(im);
+
+ return error;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.png
new file mode 100644
index 00000000000..24356267fe9
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt
new file mode 100644
index 00000000000..e85db9b587c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagestring16
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am
new file mode 100644
index 00000000000..84b6b5fd2fe
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagestring16/gdimagestring16
+endif
+
+EXTRA_DIST += \
+ gdimagestring16/CMakeLists.txt \
+ gdimagestring16/gdimagestring16_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c
new file mode 100644
index 00000000000..57eae978c36
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c
@@ -0,0 +1,32 @@
+/**
+ * Base test for gdImageString16()
+ */
+#include <gd.h>
+#include <gdfontl.h>
+#include "gdtest.h"
+
+int main()
+{
+ /* Declare the image */
+ gdImagePtr im = NULL;
+ wchar_t *wchr = L"H";
+ unsigned short *sptr;
+ sptr = (unsigned short *)wchr;
+ int foreground;
+ int errorcode = 0;
+ gdFontPtr fontptr = gdFontGetLarge();
+
+ im = gdImageCreate(20, 20);
+ gdImageColorAllocate(im, 255, 255, 255);
+ foreground = gdImageColorAllocate(im, 22, 4, 238);
+
+ gdImageString16(im, fontptr, 2, 2, sptr, foreground);
+
+ if (!gdAssertImageEqualsToFile("gdimagestring16/gdimagestring16_exp.png", im))
+ errorcode = 1;
+
+ /* Destroy the image in memory */
+ gdImageDestroy(im);
+
+ return errorcode;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.png
new file mode 100644
index 00000000000..5700578b0e2
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
index 00a8f43cb63..f46b9006ee6 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
@@ -1,9 +1,7 @@
IF(FREETYPE_FOUND)
-IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
gdimagestringft_bbox
)
-ENDIF(PNG_FOUND)
ENDIF(FREETYPE_FOUND)
-ADD_GD_TESTS(m)
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
index 956e1db0d10..0dfe26fb13c 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
@@ -1,9 +1,7 @@
if HAVE_LIBFREETYPE
-if HAVE_LIBPNG
libgd_test_programs += \
gdimagestringft/gdimagestringft_bbox
endif
-endif
EXTRA_DIST += \
gdimagestringft/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
index 1596a9e7be5..5d57bc7b062 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
@@ -8,22 +8,22 @@
#define DELTA (PI/8)
static int EXPECT[16][8] = {
- {498, 401, 630, 401, 630, 374, 498, 374},
- {491, 364, 613, 313, 602, 288, 481, 338},
- {470, 332, 563, 239, 544, 219, 451, 312},
- {438, 310, 488, 189, 463, 178, 412, 300},
- {401, 303, 401, 171, 374, 171, 374, 303},
- {365, 310, 314, 188, 289, 199, 339, 320},
- {334, 331, 241, 238, 221, 257, 314, 350},
- {313, 362, 192, 312, 181, 337, 303, 388},
- {306, 398, 174, 398, 174, 425, 306, 425},
- {313, 433, 191, 484, 202, 509, 323, 459},
- {333, 463, 240, 556, 259, 576, 352, 483},
- {363, 484, 313, 605, 338, 616, 389, 494},
- {398, 490, 398, 622, 425, 622, 425, 490},
- {432, 483, 483, 605, 508, 594, 458, 473},
- {461, 464, 554, 557, 574, 538, 481, 445},
- {481, 435, 602, 485, 613, 460, 491, 409},
+ {500, 400, 628, 400, 628, 376, 500, 376},
+ {492, 362, 611, 312, 601, 290, 483, 339},
+ {470, 330, 561, 239, 544, 221, 453, 312},
+ {437, 308, 486, 189, 464, 180, 414, 299},
+ {400, 301, 400, 173, 376, 173, 376, 301},
+ {363, 309, 313, 190, 291, 200, 340, 318},
+ {332, 331, 241, 240, 223, 257, 314, 348},
+ {311, 363, 192, 314, 183, 336, 302, 386},
+ {304, 399, 176, 399, 176, 423, 304, 423},
+ {312, 435, 193, 485, 203, 507, 321, 458},
+ {333, 465, 242, 556, 259, 574, 350, 483},
+ {364, 486, 315, 605, 337, 614, 387, 495},
+ {399, 492, 399, 620, 423, 620, 423, 492},
+ {434, 484, 484, 603, 506, 593, 457, 475},
+ {463, 464, 554, 555, 572, 538, 481, 447},
+ {483, 434, 602, 483, 611, 461, 492, 411},
};
int main()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt
new file mode 100644
index 00000000000..424cb837dad
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagestringup
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am
new file mode 100644
index 00000000000..b136c80c906
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagestringup/gdimagestringup
+endif
+
+EXTRA_DIST += \
+ gdimagestringup/CMakeLists.txt \
+ gdimagestringup/gdimagestringup_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c
new file mode 100644
index 00000000000..0832bd79072
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c
@@ -0,0 +1,34 @@
+/**
+ * Base test for gdImageStringUp()
+ */
+#include <gd.h>
+#include <gdfontl.h>
+#include "gdtest.h"
+#include <string.h>
+
+int main()
+{
+ /* Declare the image */
+ gdImagePtr im = NULL;
+ char *s = "Hello gd";
+ int errorcode = 0;
+ int foreground;
+ gdFontPtr fontptr = gdFontGetLarge();
+
+ im = gdImageCreate(50, 100);
+ gdImageColorAllocate(im, 202, 202, 0);
+ foreground = gdImageColorAllocate(im, 22, 4, 238);
+
+ gdImageStringUp(im, fontptr,
+ im->sx / 2 - fontptr->h / 2,
+ im->sy / 2 + (strlen(s) * fontptr->w / 2),
+ (unsigned char*)s, foreground);
+
+ if (!gdAssertImageEqualsToFile("gdimagestringup/gdimagestringup_exp.png", im))
+ errorcode = 1;
+
+ /* Destroy the image im memory */
+ gdImageDestroy(im);
+
+ return errorcode;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.png
new file mode 100644
index 00000000000..d1f6d664848
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt
new file mode 100644
index 00000000000..08f4ff8238f
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt
@@ -0,0 +1,7 @@
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
+ gdimagestringup16
+)
+ENDIF(PNG_FOUND)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am
new file mode 100644
index 00000000000..7735432b3da
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am
@@ -0,0 +1,8 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+ gdimagestringup16/gdimagestringup16
+endif
+
+EXTRA_DIST += \
+ gdimagestringup16/CMakeLists.txt \
+ gdimagestringup16/gdimagestringup16_exp.png
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c
new file mode 100644
index 00000000000..c843abec473
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c
@@ -0,0 +1,31 @@
+/**
+ * Base test for gdImageStringUp16()
+ */
+#include <gd.h>
+#include <gdfontl.h>
+#include "gdtest.h"
+
+int main()
+{
+ /* Declare the image */
+ gdImagePtr im = NULL;
+ wchar_t *wchr = L"H";
+ unsigned short *sptr;
+ sptr = (unsigned short *)wchr;
+ int foreground;
+ int errorcode = 0;
+ gdFontPtr fontptr = gdFontGetLarge();
+
+ im = gdImageCreate(20, 20);
+ gdImageColorAllocate(im, 255, 255, 255);
+ foreground = gdImageColorAllocate(im, 22, 4, 238);
+
+ gdImageStringUp16(im, fontptr, 2, 18, sptr, foreground);
+
+ if (!gdAssertImageEqualsToFile("gdimagestringup16/gdimagestringup16_exp.png", im))
+ errorcode = 1;
+
+ gdImageDestroy(im);
+
+ return errorcode;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.png
new file mode 100644
index 00000000000..a1a457016dc
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.png
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
index b23d2a1b86a..fc7f6f73b14 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
@@ -1,4 +1,4 @@
-SET(TESTS_FILES
+LIST(APPEND TESTS_FILES
bug00307
php_bug_72512
)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
index a5c6a04b64f..a01eb5ae940 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
@@ -5,7 +5,7 @@
* GD_QUANT_NEUQUANT has its trueColor flag unset.
*/
-
+
#include "gd.h"
#include "gdtest.h"
diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
index af0fd8c585e..7957c156a86 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
@@ -4,3 +4,6 @@ LIST(APPEND TESTS_FILES
)
ADD_GD_TESTS()
+
+# Probably should speed this test up.
+set_tests_properties(test_${TEST_PREFIX}_gdTrivialResize PROPERTIES TIMEOUT 20)
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
index 7e9ee362985..832f27ae303 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
@@ -1,4 +1,6 @@
+#ifdef HAVE_CONFIG_H
#include <config.h>
+#endif
#include <assert.h>
#include <setjmp.h>
#include <stdlib.h>
@@ -21,7 +23,14 @@
#endif
#ifdef _WIN32
-# include "readdir.h"
+#include "readdir.h"
+#include <errno.h>
+#endif
+
+/* GDTEST_TOP_DIR is defined in other compile ways except msys
+ * test_config.h is created by windows/msys/run_test.sh*/
+#ifndef GDTEST_TOP_DIR
+#include <test_config.h>
#endif
#include "gd.h"
@@ -40,7 +49,6 @@ void gdSilence(int priority, const char *format, va_list args)
(void)args;
}
-#ifdef HAVE_LIBPNG
gdImagePtr gdTestImageFromPng(const char *filename)
{
gdImagePtr image;
@@ -58,14 +66,13 @@ gdImagePtr gdTestImageFromPng(const char *filename)
}
if (fp == NULL) {
- return NULL;
+ return NULL;
}
image = gdImageCreateFromPng(fp);
fclose(fp);
return image;
}
-#endif
static char *tmpdir_base;
@@ -188,11 +195,11 @@ static int getfilesystemtime(struct timeval *tv)
fft.LowPart = ft.dwLowDateTime;
ff = fft.QuadPart;
- ff /= 10Ui64; /* convert to microseconds */
- ff -= 11644473600000000Ui64; /* convert to unix epoch */
+ ff /= 10ULL; /* convert to microseconds */
+ ff -= 11644473600000000ULL; /* convert to unix epoch */
- tv->tv_sec = (long)(ff / 1000000Ui64);
- tv->tv_usec = (long)(ff % 1000000Ui64);
+ tv->tv_sec = (long)(ff / 1000000ULL);
+ tv->tv_usec = (long)(ff % 1000000ULL);
return 0;
}
@@ -205,7 +212,7 @@ mkdtemp (char *tmpl)
static int counter = 0;
char *XXXXXX;
struct timeval tv;
- _int64 value;
+ __int64 value;
int count;
/* find the last occurrence of "XXXXXX" */
@@ -221,7 +228,7 @@ mkdtemp (char *tmpl)
value = (tv.tv_usec ^ tv.tv_sec) + counter++;
for (count = 0; count < 100; value += 7777, ++count) {
- _int64 v = value;
+ __int64 v = value;
/* Fill in the random bits. */
XXXXXX[0] = letters[v % NLETTERS];
@@ -306,7 +313,7 @@ char *gdTestTempFile(const char *template)
ret);
gdTestAssert(error != 0);
} else {
- sprintf(ret, "%s\\%s", tempdir, template);
+ sprintf(ret, "%s\\%s", tempdir, template);
}
}
#else
@@ -363,6 +370,7 @@ char *gdTestFilePathV(const char *path, va_list args)
strcat(file, "/");
#endif
strcat(file, p);
+
} while ((p = va_arg(args, const char *)) != NULL);
va_end(args);
@@ -502,7 +510,6 @@ unsigned int gdMaxPixelDiff(gdImagePtr a, gdImagePtr b)
return diff;
}
-#ifdef HAVE_LIBPNG
int gdTestImageCompareToImage(const char* file, unsigned int line, const char* message,
gdImagePtr expected, gdImagePtr actual)
{
@@ -562,6 +569,7 @@ int gdTestImageCompareToImage(const char* file, unsigned int line, const char* m
if (!fp) goto fail;
gdImagePng(surface_diff,fp);
fclose(fp);
+ gdImageDestroy(surface_diff);
fp = fopen(file_out, "wb");
if (!fp) goto fail;
@@ -581,9 +589,7 @@ fail:
}
return 1;
}
-#endif
-#ifdef HAVE_LIBPNG
int gdTestImageCompareToFile(const char* file, unsigned int line, const char* message,
const char *expected_file, gdImagePtr actual)
{
@@ -601,7 +607,6 @@ int gdTestImageCompareToFile(const char* file, unsigned int line, const char* me
}
return res;
}
-#endif
static int failureCount = 0;
@@ -622,9 +627,9 @@ int _gdTestAssert(const char* file, unsigned int line, int condition)
int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const char* message, ...)
{
va_list args;
-
+
if (condition) return 1;
-
+
fprintf(stderr, "%s:%u: ", file, line);
va_start(args, message);
vfprintf(stderr, message, args);
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
index 82d2feba305..16d89aa48cb 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
+++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
@@ -3,7 +3,6 @@
#include <stdarg.h>
-#define GDTEST_STRING_MAX 1024
typedef struct CuTestImageResult CuTestImageResult;
struct CuTestImageResult {
unsigned int pixels_changed;
@@ -64,10 +63,8 @@ int _gdTestErrorMsg(const char* file, unsigned int line, const char* string, ...
/* public assert functions */
#define gdAssertImageEqualsToFile(ex,ac) gdTestImageCompareToFile(__FILE__,__LINE__,NULL,(ex),(ac))
-#define gdAssertImageFileEqualsMsg(ex,ac,ms) gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac))
#define gdAssertImageEquals(ex,ac) gdTestImageCompareToImage(__FILE__,__LINE__,NULL,(ex),(ac))
-#define gdAssertImageEqualsMsg(ex,ac,ms) gdTestImageCompareToImage(__FILE__,__LINE__,(ms),(ex),(ac))
#define gdTestAssert(cond) _gdTestAssert(__FILE__, __LINE__, (cond))
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c b/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
index 4c788e235cc..7a2b5cccb0d 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
@@ -29,4 +29,3 @@ int main()
gdImageDestroy(tile);
return 0;
}
-
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c
index c327789d9f8..9e75d0ee368 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c
@@ -10,7 +10,7 @@ int main()
gdRect bbox;
gdRect area;
double affine[6];
-
+
affine[0] = -0.965926;
affine[1] = -0.258819;
affine[2] = 0.258819;
@@ -24,7 +24,7 @@ int main()
if (gdTransformAffineBoundingBox(&area, affine, &bbox) != GD_TRUE) {
return 1;
}
- if (!(bbox.x ==-253 && bbox.y ==-228 && bbox.width == 298 && bbox.height == 230)) {
+ if (!(bbox.x ==-253 && bbox.y ==-228 && bbox.width == 297 && bbox.height == 229)) {
return 1;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt
new file mode 100644
index 00000000000..4af9fcc2b10
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt
@@ -0,0 +1,8 @@
+LIST(APPEND TESTS_FILES
+ github_bug_00583
+ github_bug_00585
+ github_bug_00586
+ github_bug_00596
+)
+
+ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am
new file mode 100644
index 00000000000..494ec80d535
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am
@@ -0,0 +1,8 @@
+libgd_test_programs += \
+ gdtransformaffinecopy/github_bug_00583 \
+ gdtransformaffinecopy/github_bug_00585 \
+ gdtransformaffinecopy/github_bug_00586 \
+ gdtransformaffinecopy/github_bug_00596
+
+EXTRA_DIST += \
+ gdtransformaffinecopy/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c
new file mode 100644
index 00000000000..6b0fd53d1ca
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c
@@ -0,0 +1,30 @@
+/**
+ * Test that a zero determinant matrix causes gdTransformAffineCopy() to fail
+ *
+ * See <https://github.com/libgd/libgd/issues/583>
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr src, dst;
+ gdRect rect = {0, 0, 8, 8};
+ double matrix[] = {1, 1, 1, 1, 1, 1};
+ int white;
+ int res;
+
+ src = gdImageCreateTrueColor(8, 8);
+ gdTestAssert(src != NULL);
+ dst = gdImageCreateTrueColor(8, 8);
+ gdTestAssert(dst != NULL);
+ white = gdImageColorAllocate(src, 255, 255, 255);
+ gdImageFilledRectangle(src, 0, 0, 7, 7, white);
+ res = gdTransformAffineCopy(dst, 0, 0, src, &rect, matrix);
+ gdTestAssert(res == GD_FALSE);
+ gdImageDestroy(dst);
+ gdImageDestroy(src);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c
new file mode 100644
index 00000000000..e83910c95ac
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c
@@ -0,0 +1,33 @@
+/*
+ * Test that gdTransformAffineCopy() does not change the interpolation method
+ *
+ * See <https://github.com/libgd/libgd/issues/585>
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr src, dst;
+ gdRect rect = {0, 0, 8, 8};
+ double matrix[] = {1, 1, 1, 1, 1, 1};
+ int res;
+ gdInterpolationMethod old_m, new_m;
+
+ src = gdImageCreateTrueColor(8, 8);
+ gdTestAssert(src != NULL);
+ dst = gdImageCreateTrueColor(8, 8);
+ gdTestAssert(dst != NULL);
+
+ res = gdImageSetInterpolationMethod(src, GD_CATMULLROM);
+ gdTestAssert(res == GD_TRUE);
+ old_m = gdImageGetInterpolationMethod(src);
+ gdTransformAffineCopy(dst, 0, 0, src, &rect, matrix);
+ new_m = gdImageGetInterpolationMethod(src);
+ gdTestAssert(new_m == old_m);
+
+ gdImageDestroy(src);
+ gdImageDestroy(dst);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c
new file mode 100644
index 00000000000..4cf2f2ee572
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c
@@ -0,0 +1,26 @@
+/*
+ * Test that gdTransformAffineCopy() does not segfault for palette images
+ *
+ * See <>
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr src, dst;
+ gdRect rect = {0, 0, 8, 8};
+ double matrix[] = {1, 0, 0, 1, 0, 0};
+
+ src = gdImageCreate(8, 8);
+ gdTestAssert(src != NULL);
+ dst = gdImageCreate(8, 8);
+ gdTestAssert(dst != NULL);
+
+ gdTransformAffineCopy(dst, 0, 0, src, &rect, matrix);
+
+ gdImageDestroy(dst);
+ gdImageDestroy(src);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c
new file mode 100644
index 00000000000..51912e1a1ec
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c
@@ -0,0 +1,42 @@
+/**
+ * Test gdTransformAffineCopy() run error
+ *
+ * See <https://github.com/libgd/libgd/issues/596>
+ *
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ double matrix[] = {1, 0, 0, 1, 0, 0};
+ gdImagePtr src, dst;
+ gdRect rect = {0, 0, 16, 16};
+ int white, green;
+ int status = 0;
+ int res;
+ int actual_color = 0;
+ int expected_color = 0x00ff00;
+
+ src = gdImageCreateTrueColor(16, 16);
+ gdTestAssert(src != NULL);
+ white = gdImageColorAllocate(src, 255, 255, 255);
+ gdImageFilledRectangle(src, 0, 0, 16, 16, white);
+
+ dst = gdImageCreateTrueColor(50, 50);
+ gdTestAssert(dst != NULL);
+ green = gdImageColorAllocate(dst, 0, 255, 0);
+ gdImageFilledRectangle(dst, 0, 0, 50, 50, green);
+
+ res = gdTransformAffineCopy(dst, 4, 4, src, &rect, matrix);
+ gdTestAssert(res != GD_FALSE);
+
+ status = gdNumFailures();
+ actual_color = gdImageGetPixel(dst, 20, 5);
+ status = (actual_color == expected_color) ? status : 1;
+
+ gdImageDestroy(src);
+ gdImageDestroy(dst);
+ return status;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
index 7d40cddca6a..c4b90077a28 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
@@ -2,17 +2,20 @@ LIST(APPEND TESTS_FILES
bug00005_2
bug00181
bug00227
+ bug00499
gif_null
+ ossfuzz5700
+ php_bug_75571
+ uninitialized_memory_read
+ bug00006
+ bug00060
+ gif_im2im
)
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
bug00005
- bug00006
- bug00060
bug00066
- gif_im2im
- uninitialized_memory_read
)
ENDIF(PNG_FOUND)
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
index 0bdeab7e663..9306b7189e7 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
@@ -2,16 +2,19 @@ libgd_test_programs += \
gif/bug00005_2 \
gif/bug00181 \
gif/bug00227 \
+ gif/bug00499 \
gif/gif_null \
- gif/uninitialized_memory_read
+ gif/ossfuzz5700 \
+ gif/php_bug_75571 \
+ gif/uninitialized_memory_read \
+ gif/bug00006 \
+ gif/bug00060 \
+ gif/gif_im2im
if HAVE_LIBPNG
libgd_test_programs += \
gif/bug00005 \
- gif/bug00006 \
- gif/bug00060 \
- gif/bug00066 \
- gif/gif_im2im
+ gif/bug00066
endif
EXTRA_DIST += \
@@ -24,4 +27,6 @@ EXTRA_DIST += \
gif/bug00060.gif \
gif/bug00066.gif \
gif/bug00066_exp.png \
+ gif/ossfuzz5700.gif \
+ gif/php_bug_75571.gif \
gif/unitialized_memory_read.gif
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
index c80d3878e5b..95f76203b29 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
@@ -64,5 +64,6 @@ int main()
/* Destroy it */
gdImageDestroy(im);
+ free(file);
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
index 43b9e3b15c9..878537ff839 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
@@ -92,6 +92,7 @@ int main()
}
error = !im->interlace;
gdImageDestroy(im);
+ free(file);
return error;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
index e25bd9a92a8..aa20645114f 100644
--- a/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
@@ -65,5 +65,7 @@ int main()
if (buf[PROBE_SIZE-1] & 0x80) return 1;
free(buf);
fclose(fp);
+
+ free(file);
return 0;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00499.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00499.c
new file mode 100644
index 00000000000..0fedb927ca4
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00499.c
@@ -0,0 +1,51 @@
+/**
+ * Test that adding identical images to GIF animations do no double-free
+ *
+ * We are adding two frames to a GIF animation in gdDisposalNone mode, were the
+ * second frame is identical to the first, which result in that image to have
+ * zero extent. This program must not cause any memory issues.
+ *
+ * See also <https://github.com/libgd/libgd/issues/499>.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr im;
+ int black;
+ int size;
+ void * res;
+
+ im = gdImageCreate(100, 100);
+ black = gdImageColorAllocate(im, 0, 0, 0);
+ gdImageRectangle(im, 0, 0, 10, 10, black);
+
+ res = gdImageGifAnimBeginPtr(im, &size, 1, 3);
+ if (res != NULL) {
+ gdFree(res);
+ }
+
+ res = gdImageGifAnimAddPtr(im, &size, 0, 0, 0, 100, gdDisposalNone, NULL);
+ if (res != NULL) {
+ gdFree(res);
+ }
+
+ res = gdImageGifAnimAddPtr(im, &size, 0, 0, 0, 100, gdDisposalNone, im);
+ gdTestAssert(res == NULL);
+ if (res != NULL) {
+ gdFree(res);
+ }
+
+ res = gdImageGifAnimEndPtr(&size);
+ if (res != NULL) {
+ gdFree(res);
+ }
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c
new file mode 100644
index 00000000000..8fc9f88cd6c
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp = gdTestFileOpen("gif/ossfuzz5700.gif");
+ im = gdImageCreateFromGif(fp);
+ fclose(fp);
+ gdImageDestroy(im);
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gif b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gif
new file mode 100644
index 00000000000..315c5a88dbc
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gif
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c
new file mode 100644
index 00000000000..ec1f37e4e58
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c
@@ -0,0 +1,28 @@
+/**
+ * Test that GIF reading does not loop infinitely
+ *
+ * We are reading a crafted GIF image which has been truncated. This would
+ * trigger an infinite loop formerly, but know bails out early, returning
+ * NULL from gdImageCreateFromGif().
+ *
+ * See also https://bugs.php.net/bug.php?id=75571.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ fp = gdTestFileOpen2("gif", "php_bug_75571.gif");
+ gdTestAssert(fp != NULL);
+ im = gdImageCreateFromGif(fp);
+ gdTestAssert(im == NULL);
+ fclose(fp);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.gif b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.gif
new file mode 100644
index 00000000000..3c30b40f281
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.gif
Binary files differ
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
index 19964b0ce2c..ff188a93888 100644
--- a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
@@ -2,14 +2,15 @@ IF(JPEG_FOUND)
LIST(APPEND TESTS_FILES
jpeg_empty_file
jpeg_im2im
+ jpeg_ptr_double_free
jpeg_null
+ jpeg_resolution
)
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
bug_github_18
jpeg_read
- jpeg_resolution
bug00338
)
ENDIF(PNG_FOUND)
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
index 7e5d317b69f..b778470a9de 100644
--- a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
@@ -2,14 +2,15 @@ if HAVE_LIBJPEG
libgd_test_programs += \
jpeg/jpeg_empty_file \
jpeg/jpeg_im2im \
- jpeg/jpeg_null
+ jpeg/jpeg_null \
+ jpeg/jpeg_ptr_double_free \
+ jpeg/jpeg_resolution
if HAVE_LIBPNG
libgd_test_programs += \
jpeg/bug_github_18 \
jpeg/bug00338 \
- jpeg/jpeg_read \
- jpeg/jpeg_resolution
+ jpeg/jpeg_read
endif
endif
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c b/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c
index 15224d32b34..7874df28ed2 100644
--- a/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c
@@ -8,44 +8,39 @@
* See also ../png/bug00338.c
*/
-
#include <string.h>
#include "gd.h"
#include "gd_errors.h"
#include "gdtest.h"
-
#define MSG "gd-jpeg: JPEG library reports unrecoverable error: %s"
-
static int error_handler_called = 0;
-
static void error_handler(int priority, const char *format, va_list args)
{
- if (!strcmp(format, MSG)) {
- gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
- error_handler_called = 1;
- }
+ if (!strcmp(format, MSG)) {
+ gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
+ error_handler_called = 1;
+ }
}
-
int main()
{
- gdImagePtr im;
- FILE *fp;
+ gdImagePtr im;
+ FILE *fp;
- gdSetErrorMethod(error_handler);
+ gdSetErrorMethod(error_handler);
- im = gdImageCreateTrueColor(10, 10);
- fp = gdTestTempFp();
- gdImagePng(im, fp);
- gdImageDestroy(im);
+ im = gdImageCreateTrueColor(10, 10);
+ fp = gdTestTempFp();
+ gdImagePng(im, fp);
+ gdImageDestroy(im);
- im = gdImageCreateFromJpeg(fp);
- gdTestAssert(im == NULL);
+ im = gdImageCreateFromJpeg(fp);
+ gdTestAssert(im == NULL);
- gdTestAssert(error_handler_called);
+ gdTestAssert(error_handler_called);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c
new file mode 100644
index 00000000000..df5a510bb55
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c
@@ -0,0 +1,31 @@
+/**
+ * Test that failure to convert to JPEG returns NULL
+ *
+ * We are creating an image, set its width to zero, and pass this image to
+ * `gdImageJpegPtr()` which is supposed to fail, and as such should return NULL.
+ *
+ * See also <https://github.com/libgd/libgd/issues/381>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+ gdImagePtr src, dst;
+ int size;
+
+ src = gdImageCreateTrueColor(1, 10);
+ gdTestAssert(src != NULL);
+
+ src->sx = 0; /* this hack forces gdImageJpegPtr() to fail */
+
+ dst = gdImageJpegPtr(src, &size, 0);
+ gdTestAssert(dst == NULL);
+
+ gdImageDestroy(src);
+
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
index 6fd64b24447..6d618a0e56a 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
@@ -10,8 +10,13 @@ LIST(APPEND TESTS_FILES
bug00193
bug00338
bug00381_1
+)
+
+IF(ENABLE_GD_FORMATS)
+LIST(APPEND TESTS_FILES
bug00381_2
)
+ENDIF(ENABLE_GD_FORMATS)
ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
index c167955b1cb..d28253effff 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
@@ -7,10 +7,14 @@ libgd_test_programs += \
png/bug00193 \
png/bug00338 \
png/bug00381_1 \
- png/bug00381_2 \
png/png_im2im \
png/png_null \
png/png_resolution
+
+if ENABLE_GD_FORMATS
+libgd_test_programs += \
+ png/bug00381_2
+endif
endif
EXTRA_DIST += \
diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00338.c b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
index 0bdd9f9a6f0..f439d8cb8ce 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
+++ b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
@@ -8,41 +8,37 @@
* See also ../jpeg/bug00338.c
*/
-
#include <string.h>
#include "gd.h"
#include "gd_errors.h"
#include "gdtest.h"
-
#define MSG "gd-png: fatal libpng error: %s\n"
-
static int error_handler_called = 0;
-
static void error_handler(int priority, const char *format, va_list args)
{
- if (!strcmp(format, MSG)) {
- gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
- error_handler_called = 1;
- }
+ if (!strcmp(format, MSG)) {
+ gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
+ error_handler_called = 1;
+ }
}
-
int main()
{
- gdImagePtr im;
- FILE *fp;
+ gdImagePtr im;
+ FILE *fp;
- gdSetErrorMethod(error_handler);
+ gdSetErrorMethod(error_handler);
- im = gdImageCreateTrueColor(10, 10);
- fp = gdTestTempFp();
- gdImagePngEx(im, fp, 100);
- gdImageDestroy(im);
+ im = gdImageCreateTrueColor(10, 10);
+ fp = gdTestTempFp();
+ gdImagePngEx(im, fp, 100);
+ gdImageDestroy(im);
+ fclose(fp);
- gdTestAssert(error_handler_called);
+ gdTestAssert(error_handler_called);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c b/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c
index aed7545ba51..bfc944d01ff 100644
--- a/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c
+++ b/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c
@@ -24,7 +24,7 @@ int main()
gdImageDestroy(im);
return 1;
}
-
+
gdImageDestroy(im);
return 0;
}
diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
index 8e542e690c4..b1ce8a81627 100644
--- a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
@@ -4,8 +4,13 @@ LIST(APPEND TESTS_FILES
tiff_invalid_read
tiff_null
tiff_dpi
+)
+
+IF(PNG_FOUND)
+LIST(APPEND TESTS_FILES
tiff_read_bw
)
+ENDIF(PNG_FOUND)
ENDIF(TIFF_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
index 2a88d68df3c..a1364399080 100644
--- a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
@@ -3,9 +3,13 @@ libgd_test_programs += \
tiff/tiff_dpi \
tiff/tiff_im2im \
tiff/tiff_invalid_read \
- tiff/tiff_null \
+ tiff/tiff_null
+
+if HAVE_LIBPNG
+libgd_test_programs += \
tiff/tiff_read_bw
endif
+endif
EXTRA_DIST += \
tiff/CMakeLists.txt \
diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
index 7b607a25fa1..73626466dc1 100644
--- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
@@ -1,4 +1,4 @@
-/*
+/*
* Test that reading and writing image resolution values to/from TIFF files
* works correctly. Set the image resolution, write the file, read the file
* back and test that the image resolution comes back correct.
@@ -23,7 +23,7 @@ int main()
r = gdImageColorAllocate(src, 0xFF, 0, 0);
gdImageFilledRectangle(src, 0, 0, 99, 99, r);
- // gd default DPI is 96; libtiff default is 72.
+ // gd default DPI is 96; libtiff default is 72.
// Use something else so we know the value has been
// written / read correctly.
res_x = 100;
diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c
index c302c63aa86..93b646dfd97 100644
--- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c
+++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c
@@ -1,26 +1,25 @@
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("tiff", "tiff_read_bw.tiff");
- gdTestAssert(fp != NULL);
- im = gdImageCreateFromTiff(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("tiff", "tiff_read_bw.tiff");
+ gdTestAssert(fp != NULL);
+ im = gdImageCreateFromTiff(fp);
+ fclose(fp);
- gdTestAssert(im != NULL);
- gdTestAssert(!gdImageTrueColor(im));
+ gdTestAssert(im != NULL);
+ gdTestAssert(!gdImageTrueColor(im));
- path = gdTestFilePath2("tiff", "tiff_read_bw_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("tiff", "tiff_read_bw_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
index 1f85a15f86e..4ec45bd30b1 100644
--- a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
@@ -1,11 +1,6 @@
LIST(APPEND TESTS_FILES
wbmp_null
-)
-
-IF(PNG_FOUND)
-LIST(APPEND TESTS_FILES
wbmp_im2im
)
-ENDIF(PNG_FOUND)
ADD_GD_TESTS()
diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am
index fb12272cd83..37f09e1896d 100644
--- a/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am
@@ -1,10 +1,6 @@
libgd_test_programs += \
- wbmp/wbmp_null
-
-if HAVE_LIBPNG
-libgd_test_programs += \
+ wbmp/wbmp_null \
wbmp/wbmp_im2im
-endif
EXTRA_DIST += \
wbmp/CMakeLists.txt
diff --git a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
index ec27127b1d6..bfabf2626cd 100644
--- a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
@@ -2,6 +2,7 @@ IF(WEBP_FOUND)
LIST(APPEND TESTS_FILES
bug00111
bug_double_free
+ gdImageWebpEx
)
ENDIF(WEBP_FOUND)
diff --git a/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
index f01f9e672fc..48f2a527014 100644
--- a/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
@@ -1,7 +1,8 @@
if HAVE_LIBWEBP
libgd_test_programs += \
webp/bug00111 \
- webp/bug_double_free
+ webp/bug_double_free \
+ webp/gdImageWebpEx
endif
EXTRA_DIST += \
diff --git a/Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c b/Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c
new file mode 100644
index 00000000000..43011de9446
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c
@@ -0,0 +1,26 @@
+/**
+ * Basic testcase for gdImageWebpEx()
+ **/
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp1;
+ int size = 1;
+
+ im = gdImageCreateTrueColor(20, 20);
+ if (!im) {
+ return 1;
+ }
+
+ fp1 = gdTestTempFp();
+ gdImageWebpEx(im, fp1, 8);
+ gdImageWebpPtrEx(im, &size, 9);
+
+ fclose(fp1);
+
+ gdImageDestroy(im);
+ return 0;
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
index 3e3bb696cad..2447fd54d67 100644
--- a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
@@ -1,7 +1,11 @@
+LIST(APPEND TESTS_FILES
+ github_bug_501
+ github_bug_170
+)
+
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
github_bug_109
- github_bug_170
x10_basic_read
)
ENDIF(PNG_FOUND)
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
index a9a293d1612..4d14916b133 100644
--- a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
@@ -1,7 +1,10 @@
+libgd_test_programs += \
+ xbm/github_bug_501 \
+ xbm/github_bug_170
+
if HAVE_LIBPNG
libgd_test_programs += \
xbm/github_bug_109 \
- xbm/github_bug_170 \
xbm/x10_basic_read
endif
@@ -10,4 +13,5 @@ EXTRA_DIST += \
xbm/github_bug_109.xbm \
xbm/github_bug_109_exp.png \
xbm/x10_basic_read.xbm \
- xbm/x10_basic_read_exp.png
+ xbm/x10_basic_read_exp.png \
+ xbm/github_bug_501.xbm
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c
index c0b50a8f0d4..70b793738e1 100644
--- a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c
@@ -7,29 +7,27 @@
* See also <https://github.com/libgd/libgd/issues/109>.
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("xbm", "github_bug_109.xbm");
- im = gdImageCreateFromXbm(fp);
- fclose(fp);
- gdTestAssert(im != NULL);
- gdTestAssert(gdImageGetTrueColorPixel(im, 0, 0) == 0);
- gdTestAssert(gdImageGetTrueColorPixel(im, 0, 1) == 0xffffff);
+ fp = gdTestFileOpen2("xbm", "github_bug_109.xbm");
+ im = gdImageCreateFromXbm(fp);
+ fclose(fp);
+ gdTestAssert(im != NULL);
+ gdTestAssert(gdImageGetTrueColorPixel(im, 0, 0) == 0);
+ gdTestAssert(gdImageGetTrueColorPixel(im, 0, 1) == 0xffffff);
- path = gdTestFilePath2("xbm", "github_bug_109_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("xbm", "github_bug_109_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c
index 3900da7b1b6..8134fb82fdb 100644
--- a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c
@@ -47,4 +47,4 @@ int main()
gdTestAssertMsg(length == 250, "expected to write 250 bytes; %jd bytes written", (intmax_t) length);
return gdNumFailures();
}
-#endif \ No newline at end of file
+#endif
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c
new file mode 100644
index 00000000000..5d8bfd76b80
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c
@@ -0,0 +1,39 @@
+/*
+ Test reading an invalid XBM image.
+
+ The pixels of the XBM image are invalid hex which makes the uninitialezed
+ variable be encoded into the output image i.e. information disclosure.
+ The image is 8*2.
+
+ See also <https://github.com/libgd/libgd/issues/501>.
+*/
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+
+ gdImagePtr im;
+ FILE *fp;
+
+ fp = gdTestFileOpen2("xbm", "github_bug_501.xbm");
+ im = gdImageCreateFromXbm(fp);
+
+ gdTestAssert(im == NULL);
+
+ if (im) {
+ gdTestErrorMsg("Info Disclosed\n");
+ int i;
+ for (i = 0; i < 8; i++) {
+ printf("Pixel(%d, 0) %0x\n", i, gdImageGetPixel(im, i, 0));
+ }
+ for (i = 0; i < 8; i++) {
+ printf("Pixel(%d, 1) %0x\n", i, gdImageGetPixel(im, i, 1));
+ }
+ gdImageDestroy(im);
+ }
+
+ fclose(fp);
+ return gdNumFailures();
+}
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm
new file mode 100644
index 00000000000..41ad301e7fe
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm
@@ -0,0 +1,4 @@
+#define width 8
+#define height 2
+static char bits[] ={
+xzzxzz
diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c
index 99b9019c5f7..f7c505e55b7 100644
--- a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c
+++ b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c
@@ -6,27 +6,25 @@
* which is 2 bytes instead of 1, and the endianess.
*/
-
#include "gd.h"
#include "gdtest.h"
-
int main()
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("xbm", "x10_basic_read.xbm");
- im = gdImageCreateFromXbm(fp);
- fclose(fp);
- gdTestAssert(im != NULL);
+ fp = gdTestFileOpen2("xbm", "x10_basic_read.xbm");
+ im = gdImageCreateFromXbm(fp);
+ fclose(fp);
+ gdTestAssert(im != NULL);
- path = gdTestFilePath2("xbm", "x10_basic_read_exp.png");
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("xbm", "x10_basic_read_exp.png");
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
- return gdNumFailures();
+ return gdNumFailures();
}