texlive[42987] Build/source/libs: libgd 2.2.4

commits+kakuto at tug.org commits+kakuto at tug.org
Thu Jan 19 00:13:46 CET 2017


Revision: 42987
          http://tug.org/svn/texlive?view=revision&revision=42987
Author:   kakuto
Date:     2017-01-19 00:13:46 +0100 (Thu, 19 Jan 2017)
Log Message:
-----------
libgd 2.2.4

Modified Paths:
--------------
    trunk/Build/source/libs/README
    trunk/Build/source/libs/gd/ChangeLog
    trunk/Build/source/libs/gd/README
    trunk/Build/source/libs/gd/configure
    trunk/Build/source/libs/gd/libgd-PATCHES/ChangeLog
    trunk/Build/source/libs/gd/libgd-PATCHES/TL-Changes
    trunk/Build/source/libs/gd/libgd-PATCHES/patch-01-win32
    trunk/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall
    trunk/Build/source/libs/gd/libgd-src/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/COPYING
    trunk/Build/source/libs/gd/libgd-src/Makefile.am
    trunk/Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake
    trunk/Build/source/libs/gd/libgd-src/config/test-driver
    trunk/Build/source/libs/gd/libgd-src/configure.ac
    trunk/Build/source/libs/gd/libgd-src/docs/README.TESTING
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh
    trunk/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4
    trunk/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/src/Makefile.am
    trunk/Build/source/libs/gd/libgd-src/src/circletexttest.c
    trunk/Build/source/libs/gd/libgd-src/src/config.hin
    trunk/Build/source/libs/gd/libgd-src/src/gd.c
    trunk/Build/source/libs/gd/libgd-src/src/gd.h
    trunk/Build/source/libs/gd/libgd-src/src/gd_bmp.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_color.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_crop.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_filter.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_gd.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_gd2.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_gif_in.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_gif_out.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_interpolation.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_io_dp.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_nnquant.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_png.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_rotate.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_tga.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_tiff.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_topal.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_transform.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_wbmp.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_webp.c
    trunk/Build/source/libs/gd/libgd-src/src/gd_xbm.c
    trunk/Build/source/libs/gd/libgd-src/src/gdfontg.c
    trunk/Build/source/libs/gd/libgd-src/src/gdfontl.c
    trunk/Build/source/libs/gd/libgd-src/src/gdfontmb.c
    trunk/Build/source/libs/gd/libgd-src/src/gdfonts.c
    trunk/Build/source/libs/gd/libgd-src/src/gdfontt.c
    trunk/Build/source/libs/gd/libgd-src/src/gdft.c
    trunk/Build/source/libs/gd/libgd-src/src/gdfx.c
    trunk/Build/source/libs/gd/libgd-src/src/gdfx.h
    trunk/Build/source/libs/gd/libgd-src/src/gdhelpers.c
    trunk/Build/source/libs/gd/libgd-src/src/gdxpm.c
    trunk/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/Makefile.am
    trunk/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdtest/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
    trunk/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
    trunk/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
    trunk/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/windows/Makefile.vc
    trunk/Build/source/libs/gd/version.ac

Added Paths:
-----------
    trunk/Build/source/libs/gd/libgd-src/cmake/distclean.sh
    trunk/Build/source/libs/gd/libgd-src/docs/ChangeLog.historic
    trunk/Build/source/libs/gd/libgd-src/docs/NEWS.historic
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/edge_detect_quick.jpg
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/emboss.jpg
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/mean_removal.jpg
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/smooth.jpg
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/.gitignore
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/libgd.css
    trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
    trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
    trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/
    trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/basic.c
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00309.c
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354a.gd2
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354b.gd2
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.c
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.gd2
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic+100.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic-100.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/bug00300.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic+50.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic-50.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_edge_detect_quick.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_emboss.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_mean_removal.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_smooth.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00297.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipboth_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimagefliphorizontal_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipvertical_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/remi.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/Makemodule.am
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.gif
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alphablending_exp.png
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.c
    trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.jpeg
    trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow.c
    trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_1.tga
    trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_2.tga
    trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read.c
    trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.png
    trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.tga
    trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb_rle.tga
    trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read.c
    trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_1.tiff
    trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_2.tiff
    trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_3.tiff
    trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.c
    trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.jpg

Removed Paths:
-------------
    trunk/Build/source/libs/gd/libgd-src/ChangeLog
    trunk/Build/source/libs/gd/libgd-src/NEWS
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/license.txt
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt
    trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt
    trunk/Build/source/libs/gd/libgd-src/examples/Makefile
    trunk/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2
    trunk/Build/source/libs/gd/libgd-src/tests/gdtest/test_config.h.cmake
    trunk/Build/source/libs/gd/libgd-src/tests/test_config.h.in

Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/README	2017-01-18 23:13:46 UTC (rev 42987)
@@ -15,7 +15,7 @@
 freetype2 2.7.1 - checked 30dec16
   http://savannah.nongnu.org/download/freetype/
 
-gd 2.2.3 - checked 23dec16
+gd 2.2.4 - checked 18jan17
   https://github.com/libgd/libgd/releases
 
 gmp 6.1.2 - checked 16dec16

Modified: trunk/Build/source/libs/gd/ChangeLog
===================================================================
--- trunk/Build/source/libs/gd/ChangeLog	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/ChangeLog	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,8 @@
+2017-01-18  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
+
+	Import libgd-2.2.4.
+	* version.ac: Adapted.
+
 2016-12-23  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	Import libgd-2.2.3.

Modified: trunk/Build/source/libs/gd/README
===================================================================
--- trunk/Build/source/libs/gd/README	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/README	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,4 @@
-	Building libgd-2.2.3 as part of the TL tree
+	Building libgd-2.2.4 as part of the TL tree
 	=========================================
 
 This directory libs/gd/ uses a proxy Makefile.am to build the gd library
@@ -11,3 +11,4 @@
 =============================
 
 2013-06-26	Peter Breitenlohner <peb at mppmu.mpg.de>
+2017-01-18	Akira Kakuto <kakuto at fuk.kindai.ac.jp>

Modified: trunk/Build/source/libs/gd/configure
===================================================================
--- trunk/Build/source/libs/gd/configure	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/configure	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gd (TeX Live) 2.2.3.
+# Generated by GNU Autoconf 2.69 for gd (TeX Live) 2.2.4.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='gd (TeX Live)'
 PACKAGE_TARNAME='gd--tex-live-'
-PACKAGE_VERSION='2.2.3'
-PACKAGE_STRING='gd (TeX Live) 2.2.3'
+PACKAGE_VERSION='2.2.4'
+PACKAGE_STRING='gd (TeX Live) 2.2.4'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1306,7 +1306,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gd (TeX Live) 2.2.3 to adapt to many kinds of systems.
+\`configure' configures gd (TeX Live) 2.2.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1376,7 +1376,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gd (TeX Live) 2.2.3:";;
+     short | recursive ) echo "Configuration of gd (TeX Live) 2.2.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1485,7 +1485,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gd (TeX Live) configure 2.2.3
+gd (TeX Live) configure 2.2.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1908,7 +1908,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gd (TeX Live) $as_me 2.2.3, which was
+It was created by gd (TeX Live) $as_me 2.2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3831,7 +3831,7 @@
 
 # Define the identity of the package.
  PACKAGE='gd--tex-live-'
- VERSION='2.2.3'
+ VERSION='2.2.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -6569,7 +6569,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gd (TeX Live) $as_me 2.2.3, which was
+This file was extended by gd (TeX Live) $as_me 2.2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6635,7 +6635,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gd (TeX Live) config.status 2.2.3
+gd (TeX Live) config.status 2.2.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/libs/gd/libgd-PATCHES/ChangeLog
===================================================================
--- trunk/Build/source/libs/gd/libgd-PATCHES/ChangeLog	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-PATCHES/ChangeLog	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,10 @@
+2017-01-18  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
+
+	Import libgd-2.2.4 source tree from:
+	  https://github.com/libgd/libgd/releases
+	* patch-01-win32: Adapted.
+	* patch-02-no-stdcall: Adapted.
+
 2016-12-23  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	Import libgd-2.2.3 source tree from:

Modified: trunk/Build/source/libs/gd/libgd-PATCHES/TL-Changes
===================================================================
--- trunk/Build/source/libs/gd/libgd-PATCHES/TL-Changes	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-PATCHES/TL-Changes	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,4 @@
-Changes applied to the libgd-2.2.3/ tree as obtained from:
+Changes applied to the libgd-2.2.4/ tree as obtained from:
 	https://github.com/libgd/libgd/releases
 
 Removed:

Modified: trunk/Build/source/libs/gd/libgd-PATCHES/patch-01-win32
===================================================================
--- trunk/Build/source/libs/gd/libgd-PATCHES/patch-01-win32	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-PATCHES/patch-01-win32	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,7 +1,7 @@
-diff -ur libgd-2.2.3.orig/src/gdft.c libgd-2.2.3/src/gdft.c
---- libgd-2.2.3.orig/src/gdft.c	Thu Jul 21 17:32:27 2016
-+++ libgd-2.2.3/src/gdft.c	Fri Dec 23 23:08:05 2016
-@@ -1646,6 +1646,16 @@
+diff -ur libgd-2.2.4.orig/src/gdft.c libgd-2.2.4/src/gdft.c
+--- libgd-2.2.4.orig/src/gdft.c	Wed Jan 18 20:01:19 2017
++++ libgd-2.2.4/src/gdft.c	Thu Jan 19 07:20:24 2017
+@@ -1683,6 +1683,16 @@
  	 */
  	*fontpath = NULL;
  	fontsearchpath = getenv ("GDFONTPATH");

Modified: trunk/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall
===================================================================
--- trunk/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-PATCHES/patch-02-no-stdcall	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,6 @@
-diff -ur libgd-2.2.3.orig/src/gd.h libgd-2.2.3/src/gd.h
---- libgd-2.2.3.orig/src/gd.h	Thu Jul 21 17:32:27 2016
-+++ libgd-2.2.3/src/gd.h	Fri Dec 23 23:10:00 2016
+diff -ur libgd-2.2.4.orig/src/gd.h libgd-2.2.4/src/gd.h
+--- libgd-2.2.4.orig/src/gd.h	Wed Jan 18 20:01:19 2017
++++ libgd-2.2.4/src/gd.h	Thu Jan 19 07:22:18 2017
 @@ -63,7 +63,7 @@
  #   define BGD_EXPORT_DATA_PROT __declspec(dllimport)
  #  endif
@@ -9,4 +9,4 @@
 +# define BGD_STDCALL
  # define BGD_EXPORT_DATA_IMPL
  #else
- # if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY==1
+ # if defined(__GNUC__) || defined(__clang__)

Modified: trunk/Build/source/libs/gd/libgd-src/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -193,7 +193,8 @@
 
 	CONFIGURE_FILE(${GD_SOURCE_DIR}/src/config.h.cmake ${GD_SOURCE_DIR}/src/config.h ESCAPE_QUOTES)
 
-	option(BUILD_SHARED_LIBS "Build both shared and static libs" ON)
+	option(BUILD_SHARED_LIBS "Build shared libs" ON)
+	option(BUILD_STATIC_LIBS "Build static libs" OFF)
 
 	if (WIN32)
 		SET(GD_LIB libgd)
@@ -225,6 +226,8 @@
 add_subdirectory(tests)
 add_subdirectory(examples)
 
+add_custom_target(distclean ${GD_SOURCE_DIR}/cmake/distclean.sh)
+
 SET(CPACK_PACKAGE_NAME "libgd")
 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "libGD, powerful and easy to use graphic library")
 SET(CPACK_PACKAGE_VENDOR "http://www.libgd.org")

Modified: trunk/Build/source/libs/gd/libgd-src/COPYING
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/COPYING	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/COPYING	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,53 +1,73 @@
- 
-     Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-     2002 by Cold Spring Harbor Laboratory. Funded under Grant
-     P41-RR02188 by the National Institutes of Health. 
+Credits and license terms:
 
-     Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
-     Boutell.Com, Inc. 
+In order to resolve any possible confusion regarding the authorship of
+gd, the following copyright statement covers all of the authors who
+have required such a statement. If you are aware of any oversights in
+this copyright notice, please contact Pierre-A. Joye who will be
+pleased to correct them.
 
-     Portions relating to GD2 format copyright 1999, 2000, 2001, 2002
-     Philip Warner.
-     
-     Portions relating to PNG copyright 1999, 2000, 2001, 2002 Greg
-     Roelofs. 
+* Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+  2002, 2003, 2004 by Cold Spring Harbor Laboratory. Funded under
+  Grant P41-RR02188 by the National Institutes of Health.
 
-     Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002 John  
-     Ellson (ellson at lucent.com).
-   
-     Portions relating to gdft.c copyright 2001, 2002 John Ellson  
-     (ellson at lucent.com).  
+* Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+  2004 by Boutell.Com, Inc.
 
-     Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-		 Pierre-Alain Joye (pierre at libgd.org).  
+* Portions relating to GD2 format copyright 1999, 2000, 2001, 2002,
+  2003, 2004 Philip Warner.
 
-     Portions relating to JPEG and to color quantization copyright 2000,
-     2001, 2002, Doug Becker and copyright (C) 1994, 1995, 1996, 1997,
-     1998, 1999, 2000, 2001, 2002, Thomas G. Lane. This software is
-     based in part on the work of the Independent JPEG Group. See the
-     file README-JPEG.TXT for more information.
+* Portions relating to PNG copyright 1999, 2000, 2001, 2002, 2003,
+  2004 Greg Roelofs.
 
-     Portions relating to WBMP copyright 2000, 2001, 2002 Maurice
-     Szmurlo and Johan Van den Brande.
+* Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002,
+  2003, 2004 John Ellson (ellson at graphviz.org).
 
-     Permission has been granted to copy, distribute and modify gd in
-     any context without fee, including a commercial application,
-     provided that this notice is present in user-accessible supporting
-     documentation.
+* Portions relating to gdft.c copyright 2001, 2002, 2003, 2004 John
+  Ellson (ellson at graphviz.org).
 
-     This does not affect your ownership of the derived work itself, and 
-     the intent is to assure proper credit for the authors of gd, not to
-     interfere with your productive use of gd. If you have questions,
-     ask. "Derived works" includes all programs that utilize the   
-     library. Credit must be given in user-accessible documentation.
+* Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+  Pierre-Alain Joye (pierre at libgd.org).
 
-     This software is provided "AS IS." The copyright holders disclaim  
-     all warranties, either express or implied, including but not
-     limited to implied warranties of merchantability and fitness for a
-     particular purpose, with respect to this code and accompanying  
-     documentation.
+* Portions relating to JPEG and to color quantization copyright
+  2000, 2001, 2002, 2003, 2004, Doug Becker and copyright (C) 1994,
+  1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Thomas
+  G. Lane. This software is based in part on the work of the
+  Independent JPEG Group. See the file README-JPEG.TXT for more
+  information.
 
-     Although their code does not appear in gd, the authors wish to thank
-     David Koblas, David Rowley, and Hutchison Avenue Software Corporation
-     for their prior contributions.
+* Portions relating to GIF compression copyright 1989 by Jef
+  Poskanzer and David Rowley, with modifications for thread safety
+  by Thomas Boutell.
 
+* Portions relating to GIF decompression copyright 1990, 1991, 1993
+  by David Koblas, with modifications for thread safety by Thomas
+  Boutell.
+
+* Portions relating to WBMP copyright 2000, 2001, 2002, 2003, 2004
+  Maurice Szmurlo and Johan Van den Brande.
+
+* Portions relating to GIF animations copyright 2004 Jaakko Hyvätti
+  (jaakko.hyvatti at iki.fi)
+
+Permission has been granted to copy, distribute and modify gd in
+any context without fee, including a commercial application,
+provided that this notice is present in user-accessible supporting
+documentation.
+
+This does not affect your ownership of the derived work itself,
+and the intent is to assure proper credit for the authors of gd,
+not to interfere with your productive use of gd. If you have
+questions, ask. "Derived works" includes all programs that utilize
+the library. Credit must be given in user-accessible
+documentation.
+
+This software is provided "AS IS." The copyright holders disclaim
+all warranties, either express or implied, including but not
+limited to implied warranties of merchantability and fitness for a
+particular purpose, with respect to this code and accompanying
+documentation.
+
+Although their code does not appear in the current release, the
+authors wish to thank David Koblas, David Rowley, and Hutchison
+Avenue Software Corporation for their prior contributions.
+

Deleted: trunk/Build/source/libs/gd/libgd-src/ChangeLog
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/ChangeLog	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/ChangeLog	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,145 +0,0 @@
-4d29684 CVE-2015-8874
-fe199ed release gd-2.2.0
-6556574 ChangeLog: update for gd-2.2 branching
-c6c52b3 dist: drop bzip2 tarball
-7932944 libtool: set revision based on package version
-119b38e travis: switch to the local bootstrap script
-f79d0a8 m4: use an older openmp macro
-e6bf771 docs: clean up a bit and support `NaturalDocs`
-c9a4a85 libimagequant: fix integration
-6e054c4 gdlib-config: mark it as deprecated #140
-b64c996 build: fix GDLIB_REVISION collision
-10a4915 tests: rework handling of temp output files
-1239832 configure/cmake: unify header checks and config.h generation
-32c5072 bootstrap: switch to autoreconf
-f7471f2 tests: add missing gdimagesetpixel tests
-e59a0e8 tests: add missing test files to dist
-2733b62 tga: cleanup/simplify a bit
-96d5687 tga: fix two memory corruption bugs #159
-8f50777 tests: get working under lsan (leak sanitizer)
-e530663 png: fix some memory leaks w/invalid images
-82b80dc gif: avoid out-of-bound reads of masks array #209
-4dc1a2d xbm: avoid stack overflow (read) with large names #211
-b083ec1 cmake: update build files to match autotools more
-2db153a webpng: rewrite & cleanup to use getopt
-b12f217 configure: enable -Werror by default when available
-75c38f6 fix various gcc/clang warnings found with -Wall
-8bdfede cmake: document the common build/install steps #179
-6f3552d travis: drop multiarch settings
-d549193 travis: drop nasm apt install
-cd15d9b drop unused make_drone.io
-b32324d travis: enable the clang compiler
-05d70f6 tests: fix leaks in test code
-4e61c9b tiff: fix leak in gdImageCreateFromTiffCtx()
-658f168 gd2: fix double free when processing invalid headers
-0315e44 tests: gd2: add general read test helpers #208
-3c47bb4 tests: do not build libgdtest.a all the time
-09d2d01 webp: fix double free
-cd1d964 libgd: update & sort cmake installed headers #164
-161ac24 travis: rework & improve main script logic
-613e8c9 tests: split up makefile entries
-92c3209 tests: fix distclean errors
-3768c9e travis: switch to non-sudo mode
-adc8598 tests: unify cmake test code into a single macro
-ef9b000 build: handle renamed README file
-e16310b libgd: update & sort source lists
-a44e1ba tests: gdimageline: add missing -lm linkage
-3b0eabf tests: add missing cmake files gdimagefile/gdimagefilter
-4c6a07b gitignore: split up test entries
-6455304 tests: drop EXTRA_PROGRAMS
-982d488 revert... unneeded
-a5b5c27 Fix memory leak
-2bb97f4 gd2: handle corrupt images better (CVE-2016-3074)
-fc14a8c README: document supported image formats
-5277b6f Merge pull request #199 from mattbo/tiff_dpi_support
-4e53ed7 Added support for reading and writing TIFFTAG_XRESOLUTION and TIFFTAG_YRESOLUTION.  Includes a unit test.
-6913dd3 bmp: use double variant of ceil func
-f29f7db Merge pull request #198 from sherif-elmetainy/master
-e87ec88 :fix and unit test for crash issue in gdImageFillTiled
-258dbf2 README: link to the CONTRIBUTORS file
-6895576 README: reformat in markdown for better github display
-73ab7c7 Merge pull request #182 from leoyanggit/fix_build_static
-e08acb0 Merge pull request #153 from davidchappelle/master
-78dad44 circletexttest: check image creation return value
-a9346dd travis: build/check in parallel
-e5d1e9d Fail Travis builds if make check fails
-b6211d9 tests: fix build failures when jpeg/freetype are disabled
-3667974 Merge pull request #193 from vapier/master
-f732d74 Merge pull request #194 from jasonwilliams200OK/master
-859bcf7 git,repo: Ignore build spew.
-10a8761 Merge pull request #192 from jasonwilliams200OK/master
-8f69034 code: Adds missing methods for absent libz case.
-a4f5d5d configure: unify library tests
-a9205e5 configure: require autoconf-2.64/automake-1.11
-2e04a67 win: Use an external snprintf hook.
-9104bba configure: use AS_HELP_STRING everywhere
-1dc5280 Merge pull request #191 from jitendarKumar/patch-8
-dd48286 Logical Operation && has no Impact on expression result .
-52dad8b Update git ignore file to exclude cmake build directory
-9ea3097 Prevent duplicate macro definition errors/warnings
-40f42c0 Fix compiler warnings when checking interpolation_id
-7147b64 Make BUILD_SHARED_LIBS configurable
-4751b60 gdImageScaleTwoPass memory leak fix
-4e1ce66 Merge pull request #166 from jitendarKumar/patch-5
-1219113 Merge pull request #155 from jitendarKumar/patch-2
-38e016f Merge pull request #156 from jitendarKumar/patch-3
-4e70131 Merge pull request #157 from jitendarKumar/patch-4
-895be03 Indentation corrected.
-7b6261c Dereference null return value in gdtest.c
-7297c94 Merge pull request #163 from wangkun611/webp_cmake
-917fa11 fix CMake error when ENABLE_WEBP
-7ec030c add gdImageCreateFromWebpPtr impl
-eaca20f Remove Deadcode in gd.c
-312b020 Update gd_topal.c
-18bbbfa Merge pull request #148 from smcdow/master
-f2712a6 Remove Deadcode in gd_nnquant.c
-4f99667 Merge pull request #154 from jitendarKumar/patch-1
-4cf5307 Missing nullcheck in gd_topal.c
-d403501 Dereference null return value in gdfx.c
-ac527e6 delete webpimg.c references
-c9dac2d Fix segfault in gdImageFlipVertical() for non-TrueColor images.
-a9f3a83 Merge pull request #146 from dmelani/rotation_fix
-4e833d3 Added missing zero.
-b12712e Merge pull request #143 from vapier/master
-2618996 missing file in archive, need for autoreconf
-6bdfa68 ignore new tests
-1c33d94 tests: fix header inclusion
-e0aafd0 Add Debian/Ubuntu M-A specific configure options
-3a72f64 lint.travis-ci.org doesn't know version and description in Coverity addon
-87804f6 Comment-out Coverity encrypted token
-2b8bfd4 Don't fail when make check fails; Add coverity configuration for coverity_scan branch
-10a92e7 Even more missing semicolons
-09783e4 Add missing semicolons to .travis.yml
-25cfac5 Replace <TAB> with 8*<SPACE>
-2be44f0 Don't upgrade build environment now
-5edbc3f Use autotools on linux to build libgd
-9201900 Change issue tracker URL to github
-ba081d9 Merge branch 'GD-2.1'
-1481c41 fix #140, versions placeholder not replaced in gdlib-config
-88fb8fc typo
-4ef5903 fix some leaks on error
-824a3aa remove remaining libvpx related code
-a79232c fix #129, drop VPX usage in favor of libwebp
-9a205a1 Merge branch 'GD-2.1'
-511160e fix #82, fix 1 bit tiff support
-7a567db Merge branch 'GD-2.1'
-aa1d71c fix #135, fix logic in gdkanji
-58990de Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd
-2f85291 fix #139, patch by Peter Breitenlohner
-255a9e4 fix visibility test
-358950c remove this test, too big
-5c48b49 fix #91, actually add tests, bug already fixed
-f680978 fix #94, HAVE_VISIBILITY may be defined but set to 0
-b126726 fix #89, fix leaks on tiff read
-acdebc8 fix #84, double free and overrun due to wrong alloc type, uint8_t instead of int
-490bc3e free palette on error
-289c829 port fix for saner boolean usage from https://reviews.facebook.net/D31695
-2b3130e fix #90, actually copy src to dst
-b1f4313 add tests for #111
-3d7c3f5 fix #111, invalid quantization
-ac1ff44 update results to match modern freetype builds
-c7e5dc6  fix #111, invalid default quantization
-81d341c fix #113, NULL deref in gdfx
-2f40d52 Fix #138, VS 2010 build error due to double semi column
-0e9c4e0 master is now 2.2.0-dev
-06b2e4f back to dev

Modified: trunk/Build/source/libs/gd/libgd-src/Makefile.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/Makefile.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/Makefile.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,6 @@
 ACLOCAL_AMFLAGS = -I m4
 SUBDIRS = src config tests
 EXTRA_DIST = test docs examples windows VMS cmake netware bootstrap.sh CMakeLists.txt CONTRIBUTORS README.md
+
+clean-local:
+	$(srcdir)/cmake/distclean.sh --automake

Deleted: trunk/Build/source/libs/gd/libgd-src/NEWS
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/NEWS	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/NEWS	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,109 +0,0 @@
-'GD                                                                         NEWS
-|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-GD HEAD
-169, gdColorMapLookup() answers the RGB values according to given color map
-     (Takeshi Abe)
-176, Added support of variable resolution by Alan Boudreault (Takeshi Abe)
-184, new filter gdImagePixelate() by Kalle Sommer Nielsen (Takeshi Abe)
-
-GD 2.0.36 (2007-11-xx)
-145, Fixed leak in gdImageCopyResized (Patch by Brent Bottles)
- 81, Fixed gdImageCopy with true color image, the transparent color was ignored
-     (Pierre, Mark Fisher)
- 88, Fixed support of PNG grayscale image with alpha channel (Pierre)
- 95, Added Netware builds script (Guenter)
- 97, ease the creation of regexp to match symbols/functions in the sources 
-     (Guenter)
-100, spurious horizontal line drawn by gdImageFilledPolygon (Takeshi Abe)
-101, _gdCreateFromFile() can crash if gdImageCreate fails (Mattias Bengtsson)
-105, gdImageCreateFrom*Ptr() can crash if gdNewDynamicCtxEx() fails (Mattias)
-106, gdImageRectangle draws 1x1 rectangles as 1x3 rectangles (Pierre)
-109, Possible integer overflow in gdImageFill() (Mattias Bengtsson)
-111, Optimization for single pixel line not in correct order (Mattias)
-112, gdImageColorDeallocate can write outside buffer (Mattias Bengtsson)
-113, gdImageColorTransparent can write outside buffer (Mattias Bengtsson)
-127, gdImageWBMPCtx can crash when createwbmp fails (Scott)
-132, Fixed decoding of the html entity ϑ (Thomas Bonfort, Pierre)
-133, Fixed configure script ignoring --with-png=DIR option (Scott)
-166, Fixed handling 3-digit RGB and transparent color in XPM (Takeshi Abe)
-173, Fixed the memory management in font_path() of gdft.c (Takeshi Abe)
-174, Fixed that font_path() in gdft.c breaks reentrancy (Takeshi Abe)
-180, Added a Makefile entry for tests/xpm (Takeshi Abe)
-181, Fixed gd_gif_out.c to enable proper interlace
-185, Fixed memory leaks in gdImageCreateFromXpm() (Takeshi Abe)
-186, Fixed tiling true colour with palette image (Marko Vukovic, Takeshi Abe)
-193, Fixed gdImagePng() with no color allocated (Martin McNickle, Takeshi Abe)
-196, Fixed a memory leak in newDynamic() (Steve Fossen)
-198, Fixed useFontConfig() to work as documented (Mojca Miklavec, Ethan Merritt)
-
-GD 2.0.35 (2007-06-21)
-41, Fix valgrind error in gdImageFillTiled (Nuno Lopes) 
-45, Add missing custom cmake macros (required for the tests suite)
-51, Avoid signature buffer copy  in gd_gif_c (Nuno Lopes)
-48, Race condition in gdImageStringFTEx (Antony Dogval, Pierre 
-    Scott MacVicar)
-52, Reading GIF images is not thread safe (static usage in private
-    functions) (Roman Nemecek, Nuno Lopes, Pierre)
-60, GIF Local palette is read twice
-66, GIF, Use local frame dimension when possible instead of the 
-    logical screen size (Pierre)
-68, OpenVMS build support, see VMS/README.VMS for the details 
-    (Alexey Chupahin)
-70, GIF, do not try to use the global colmap if it does not exist
-    (Nuno Lopes, Pierre)
-72, gdImageAALine draws axis lines with two pixels width (Pierre)
-73, TTF usage doesn't work properly on Netware (Guenter Knauf, Scott MacVicar)
-74, gdImageArc CPU usage with large angles (Pierre)
-78, gdImageFilledRectangle regression fixed when used with reversed edges
-    (Pierre)
-86, Possible infinite loop in libgd/gd_png.c, flaw found by Xavier Roche
-    (Pierre)
-87, Fixed segfault when an invalid color index is present in a GIF 
-    image data, reported by Elliot <wccode at gmail dot com> (Pierre)
-89, Possible integer overflow in gdImageCreateTrueColor (Pierre)
-94, gdImageCreateXbm can crash if gdImageCreate fails (Pierre)
-
-GD 2.0.34 (2007-02-07)
- 3, Initialize variables in tweenColorTest, fix cache
- 4, gdImageFill, multiple segfaults with patterns or invalid arguments
- 5, gdImageRectangle draws corners twice
- 6, GIF Output does use the transparent color with truecolor images
- 7, Multiple security issues in GIF loader
- 8, gdIimageCopy doen't use the alpha channel
- 9, Add autogen and and misc configure/makefile (Lars Hecking)
-10, gdImageFilledEllipse does not respect transparency
-11, gdImageCreateFromPng*  crashes with empty file
-12, gdImageCreateFromPngCrx, initialize the signature buffer not the
-    infile
-13, leak in jinit_2pass_quantizer (gd_topal.c)
-14, Added santiy checks for possible memory allocation errors
-15, gdImageCreatePaletteFromTrueColor, later color allocations overwrite
-    the palette colors (Rob Leslie)
-16, Obscure error on Sun's compiler in entities.tcl
-    (John Ellson/Graphviz)
-17, gdImageCreate, invalid gdFree call when overflow2 fails
-18, HWB_Diff, invalid usage of abs instead of fabs
-    (Nick Atty)
-19, Fixed gdImageCopyMergeGray when used with a true color image
-20, transparency preservation in gdImageCopyRotated
-21, Out of range checks in gdImageSetAAPixelColor
-22, gdFontCacheSetup does not stop on error
-23, Errors when gdImageStringFTEx is called with an empty string
-    (Kevin Scaldeferri)
-24, gdft.c, uninitialized variable "charmap" and avoid divide-by-zero
-    (John Ellson/Graphviz)
-25, DISABLE_THREADS to permit disabling of thread support
-    (John Ellson/Graphviz)
-26, dynamicGetbuf, sourceGetbuf must return 0 for errors and EOF
-27, gdSeek declaration is wrong
-29, Windows native makefile (Edin Kadribašić)
-30, restores the ability to recognize and handle a font with
-    Adobe-specific character encoding. Added gdFTEX_Adobe_Custom.
-31, Shared library support on cygwin (Dr. Volker Zell)
-32, Pattern-fill works incorrectly if tile is created via
-    gdImageCreateTruecolor (Ethan Merritt)
-33, malformed PNG image crashes  (CRC error)
-34, reading some gif images creates infinite loop
-36, gdImageFillToBorder crashes when used with alpha
-40, possible Buffer overflow in the gdImageStringFTEx function
-    in gdft.c (CVE-2007-0455) (Kees Cook)

Added: trunk/Build/source/libs/gd/libgd-src/cmake/distclean.sh
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/cmake/distclean.sh	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/cmake/distclean.sh	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,46 @@
+#!/bin/sh
+# CMake doesn't provide the equiv of "distclean" which makes it impossible to
+# properly clean up after it when you build in-tree.  This script emulates it.
+# It assumes it's run in the dir you want to clean.
+
+usage() {
+	cat <<-EOF
+Usage: $0 [--automake]
+
+Clean all the cmake generated output files.
+
+Options:
+  --automake  Do not clean files autotools also creates
+EOF
+	exit ${1:-0}
+}
+
+AUTOMAKE="false"
+while [ $# -ne 0 ]; do
+	case $1 in
+	-h|--help)  usage ;;
+	--automake) AUTOMAKE="true" ;;
+	*) usage 1 ;;
+	esac
+	shift
+done
+
+set -x
+
+find . -maxdepth 3 \
+	'(' \
+		-name CMakeCache.txt -o \
+		-name CMakeFiles -o \
+		-name CTestTestfile.cmake -o \
+		-name cmake_install.cmake \
+	')' \
+	-exec rm -rf {} +
+rm -rf \
+	Bin Testing \
+	CPackConfig.cmake CPackSourceConfig.cmake \
+	DartConfiguration.tcl
+
+if [ "${AUTOMAKE}" = "false" ]; then
+	find . -maxdepth 3 '!' -wholename './windows/*' -a -name Makefile -exec rm -rf {} +
+	rm -f src/config.h
+fi


Property changes on: trunk/Build/source/libs/gd/libgd-src/cmake/distclean.sh
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake	2017-01-18 23:13:46 UTC (rev 42987)
@@ -69,7 +69,7 @@
   PATH_SUFFIXES include/freetype2 include
 )
 
-find_path(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h
+find_path(FREETYPE_INCLUDE_DIR_freetype2 config/ftheader.h
   HINTS
     ENV FREETYPE_DIR
   PATHS

Modified: trunk/Build/source/libs/gd/libgd-src/config/test-driver
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/config/test-driver	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/config/test-driver	2017-01-18 23:13:46 UTC (rev 42987)
@@ -3,7 +3,7 @@
 
 scriptversion=2013-07-13.22; # UTC
 
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -106,11 +106,14 @@
 # Test script is run here.
 "$@" >$log_file 2>&1
 estatus=$?
+
 if test $enable_hard_errors = no && test $estatus -eq 99; then
-  estatus=1
+  tweaked_estatus=1
+else
+  tweaked_estatus=$estatus
 fi
 
-case $estatus:$expect_failure in
+case $tweaked_estatus:$expect_failure in
   0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
   0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
   77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
@@ -119,6 +122,12 @@
   *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
 esac
 
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
 # Report outcome to console.
 echo "${col}${res}${std}: $test_name"
 

Modified: trunk/Build/source/libs/gd/libgd-src/configure.ac
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/configure.ac	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/configure.ac	2017-01-18 23:13:46 UTC (rev 42987)
@@ -300,7 +300,8 @@
 
 dnl Enable -Werror if possible.  Do it after all other tests.
 AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], [treat compile warnings as errors])])
-if test "$enable_werror" = "yes" || test "$GCC" = "yes" -a "$enable_werror" != "no"; then
+if test "$enable_werror" = "yes" || \
+   test "$GCC" = "yes" -a "$enable_werror" != "no" -a -d "$srcdir/.git"; then
   CFLAGS="-Werror $CFLAGS"
   CXXFLAGS="-Werror $CXXFLAGS"
 fi
@@ -324,7 +325,6 @@
 AC_CONFIG_FILES([Makefile
                 src/Makefile
                 tests/Makefile
-        		tests/test_config.h
                 config/Makefile
                 config/gdlib-config
                 config/gdlib.pc])

Added: trunk/Build/source/libs/gd/libgd-src/docs/ChangeLog.historic
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/ChangeLog.historic	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/docs/ChangeLog.historic	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,145 @@
+4d29684 CVE-2015-8874
+fe199ed release gd-2.2.0
+6556574 ChangeLog: update for gd-2.2 branching
+c6c52b3 dist: drop bzip2 tarball
+7932944 libtool: set revision based on package version
+119b38e travis: switch to the local bootstrap script
+f79d0a8 m4: use an older openmp macro
+e6bf771 docs: clean up a bit and support `NaturalDocs`
+c9a4a85 libimagequant: fix integration
+6e054c4 gdlib-config: mark it as deprecated #140
+b64c996 build: fix GDLIB_REVISION collision
+10a4915 tests: rework handling of temp output files
+1239832 configure/cmake: unify header checks and config.h generation
+32c5072 bootstrap: switch to autoreconf
+f7471f2 tests: add missing gdimagesetpixel tests
+e59a0e8 tests: add missing test files to dist
+2733b62 tga: cleanup/simplify a bit
+96d5687 tga: fix two memory corruption bugs #159
+8f50777 tests: get working under lsan (leak sanitizer)
+e530663 png: fix some memory leaks w/invalid images
+82b80dc gif: avoid out-of-bound reads of masks array #209
+4dc1a2d xbm: avoid stack overflow (read) with large names #211
+b083ec1 cmake: update build files to match autotools more
+2db153a webpng: rewrite & cleanup to use getopt
+b12f217 configure: enable -Werror by default when available
+75c38f6 fix various gcc/clang warnings found with -Wall
+8bdfede cmake: document the common build/install steps #179
+6f3552d travis: drop multiarch settings
+d549193 travis: drop nasm apt install
+cd15d9b drop unused make_drone.io
+b32324d travis: enable the clang compiler
+05d70f6 tests: fix leaks in test code
+4e61c9b tiff: fix leak in gdImageCreateFromTiffCtx()
+658f168 gd2: fix double free when processing invalid headers
+0315e44 tests: gd2: add general read test helpers #208
+3c47bb4 tests: do not build libgdtest.a all the time
+09d2d01 webp: fix double free
+cd1d964 libgd: update & sort cmake installed headers #164
+161ac24 travis: rework & improve main script logic
+613e8c9 tests: split up makefile entries
+92c3209 tests: fix distclean errors
+3768c9e travis: switch to non-sudo mode
+adc8598 tests: unify cmake test code into a single macro
+ef9b000 build: handle renamed README file
+e16310b libgd: update & sort source lists
+a44e1ba tests: gdimageline: add missing -lm linkage
+3b0eabf tests: add missing cmake files gdimagefile/gdimagefilter
+4c6a07b gitignore: split up test entries
+6455304 tests: drop EXTRA_PROGRAMS
+982d488 revert... unneeded
+a5b5c27 Fix memory leak
+2bb97f4 gd2: handle corrupt images better (CVE-2016-3074)
+fc14a8c README: document supported image formats
+5277b6f Merge pull request #199 from mattbo/tiff_dpi_support
+4e53ed7 Added support for reading and writing TIFFTAG_XRESOLUTION and TIFFTAG_YRESOLUTION.  Includes a unit test.
+6913dd3 bmp: use double variant of ceil func
+f29f7db Merge pull request #198 from sherif-elmetainy/master
+e87ec88 :fix and unit test for crash issue in gdImageFillTiled
+258dbf2 README: link to the CONTRIBUTORS file
+6895576 README: reformat in markdown for better github display
+73ab7c7 Merge pull request #182 from leoyanggit/fix_build_static
+e08acb0 Merge pull request #153 from davidchappelle/master
+78dad44 circletexttest: check image creation return value
+a9346dd travis: build/check in parallel
+e5d1e9d Fail Travis builds if make check fails
+b6211d9 tests: fix build failures when jpeg/freetype are disabled
+3667974 Merge pull request #193 from vapier/master
+f732d74 Merge pull request #194 from jasonwilliams200OK/master
+859bcf7 git,repo: Ignore build spew.
+10a8761 Merge pull request #192 from jasonwilliams200OK/master
+8f69034 code: Adds missing methods for absent libz case.
+a4f5d5d configure: unify library tests
+a9205e5 configure: require autoconf-2.64/automake-1.11
+2e04a67 win: Use an external snprintf hook.
+9104bba configure: use AS_HELP_STRING everywhere
+1dc5280 Merge pull request #191 from jitendarKumar/patch-8
+dd48286 Logical Operation && has no Impact on expression result .
+52dad8b Update git ignore file to exclude cmake build directory
+9ea3097 Prevent duplicate macro definition errors/warnings
+40f42c0 Fix compiler warnings when checking interpolation_id
+7147b64 Make BUILD_SHARED_LIBS configurable
+4751b60 gdImageScaleTwoPass memory leak fix
+4e1ce66 Merge pull request #166 from jitendarKumar/patch-5
+1219113 Merge pull request #155 from jitendarKumar/patch-2
+38e016f Merge pull request #156 from jitendarKumar/patch-3
+4e70131 Merge pull request #157 from jitendarKumar/patch-4
+895be03 Indentation corrected.
+7b6261c Dereference null return value in gdtest.c
+7297c94 Merge pull request #163 from wangkun611/webp_cmake
+917fa11 fix CMake error when ENABLE_WEBP
+7ec030c add gdImageCreateFromWebpPtr impl
+eaca20f Remove Deadcode in gd.c
+312b020 Update gd_topal.c
+18bbbfa Merge pull request #148 from smcdow/master
+f2712a6 Remove Deadcode in gd_nnquant.c
+4f99667 Merge pull request #154 from jitendarKumar/patch-1
+4cf5307 Missing nullcheck in gd_topal.c
+d403501 Dereference null return value in gdfx.c
+ac527e6 delete webpimg.c references
+c9dac2d Fix segfault in gdImageFlipVertical() for non-TrueColor images.
+a9f3a83 Merge pull request #146 from dmelani/rotation_fix
+4e833d3 Added missing zero.
+b12712e Merge pull request #143 from vapier/master
+2618996 missing file in archive, need for autoreconf
+6bdfa68 ignore new tests
+1c33d94 tests: fix header inclusion
+e0aafd0 Add Debian/Ubuntu M-A specific configure options
+3a72f64 lint.travis-ci.org doesn't know version and description in Coverity addon
+87804f6 Comment-out Coverity encrypted token
+2b8bfd4 Don't fail when make check fails; Add coverity configuration for coverity_scan branch
+10a92e7 Even more missing semicolons
+09783e4 Add missing semicolons to .travis.yml
+25cfac5 Replace <TAB> with 8*<SPACE>
+2be44f0 Don't upgrade build environment now
+5edbc3f Use autotools on linux to build libgd
+9201900 Change issue tracker URL to github
+ba081d9 Merge branch 'GD-2.1'
+1481c41 fix #140, versions placeholder not replaced in gdlib-config
+88fb8fc typo
+4ef5903 fix some leaks on error
+824a3aa remove remaining libvpx related code
+a79232c fix #129, drop VPX usage in favor of libwebp
+9a205a1 Merge branch 'GD-2.1'
+511160e fix #82, fix 1 bit tiff support
+7a567db Merge branch 'GD-2.1'
+aa1d71c fix #135, fix logic in gdkanji
+58990de Merge branch 'master' of https://bitbucket.org/libgd/gd-libgd
+2f85291 fix #139, patch by Peter Breitenlohner
+255a9e4 fix visibility test
+358950c remove this test, too big
+5c48b49 fix #91, actually add tests, bug already fixed
+f680978 fix #94, HAVE_VISIBILITY may be defined but set to 0
+b126726 fix #89, fix leaks on tiff read
+acdebc8 fix #84, double free and overrun due to wrong alloc type, uint8_t instead of int
+490bc3e free palette on error
+289c829 port fix for saner boolean usage from https://reviews.facebook.net/D31695
+2b3130e fix #90, actually copy src to dst
+b1f4313 add tests for #111
+3d7c3f5 fix #111, invalid quantization
+ac1ff44 update results to match modern freetype builds
+c7e5dc6  fix #111, invalid default quantization
+81d341c fix #113, NULL deref in gdfx
+2f40d52 Fix #138, VS 2010 build error due to double semi column
+0e9c4e0 master is now 2.2.0-dev
+06b2e4f back to dev

Added: trunk/Build/source/libs/gd/libgd-src/docs/NEWS.historic
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/NEWS.historic	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/docs/NEWS.historic	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,109 @@
+'GD                                                                         NEWS
+|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+GD HEAD
+169, gdColorMapLookup() answers the RGB values according to given color map
+     (Takeshi Abe)
+176, Added support of variable resolution by Alan Boudreault (Takeshi Abe)
+184, new filter gdImagePixelate() by Kalle Sommer Nielsen (Takeshi Abe)
+
+GD 2.0.36 (2007-11-xx)
+145, Fixed leak in gdImageCopyResized (Patch by Brent Bottles)
+ 81, Fixed gdImageCopy with true color image, the transparent color was ignored
+     (Pierre, Mark Fisher)
+ 88, Fixed support of PNG grayscale image with alpha channel (Pierre)
+ 95, Added Netware builds script (Guenter)
+ 97, ease the creation of regexp to match symbols/functions in the sources 
+     (Guenter)
+100, spurious horizontal line drawn by gdImageFilledPolygon (Takeshi Abe)
+101, _gdCreateFromFile() can crash if gdImageCreate fails (Mattias Bengtsson)
+105, gdImageCreateFrom*Ptr() can crash if gdNewDynamicCtxEx() fails (Mattias)
+106, gdImageRectangle draws 1x1 rectangles as 1x3 rectangles (Pierre)
+109, Possible integer overflow in gdImageFill() (Mattias Bengtsson)
+111, Optimization for single pixel line not in correct order (Mattias)
+112, gdImageColorDeallocate can write outside buffer (Mattias Bengtsson)
+113, gdImageColorTransparent can write outside buffer (Mattias Bengtsson)
+127, gdImageWBMPCtx can crash when createwbmp fails (Scott)
+132, Fixed decoding of the html entity ϑ (Thomas Bonfort, Pierre)
+133, Fixed configure script ignoring --with-png=DIR option (Scott)
+166, Fixed handling 3-digit RGB and transparent color in XPM (Takeshi Abe)
+173, Fixed the memory management in font_path() of gdft.c (Takeshi Abe)
+174, Fixed that font_path() in gdft.c breaks reentrancy (Takeshi Abe)
+180, Added a Makefile entry for tests/xpm (Takeshi Abe)
+181, Fixed gd_gif_out.c to enable proper interlace
+185, Fixed memory leaks in gdImageCreateFromXpm() (Takeshi Abe)
+186, Fixed tiling true colour with palette image (Marko Vukovic, Takeshi Abe)
+193, Fixed gdImagePng() with no color allocated (Martin McNickle, Takeshi Abe)
+196, Fixed a memory leak in newDynamic() (Steve Fossen)
+198, Fixed useFontConfig() to work as documented (Mojca Miklavec, Ethan Merritt)
+
+GD 2.0.35 (2007-06-21)
+41, Fix valgrind error in gdImageFillTiled (Nuno Lopes) 
+45, Add missing custom cmake macros (required for the tests suite)
+51, Avoid signature buffer copy  in gd_gif_c (Nuno Lopes)
+48, Race condition in gdImageStringFTEx (Antony Dogval, Pierre 
+    Scott MacVicar)
+52, Reading GIF images is not thread safe (static usage in private
+    functions) (Roman Nemecek, Nuno Lopes, Pierre)
+60, GIF Local palette is read twice
+66, GIF, Use local frame dimension when possible instead of the 
+    logical screen size (Pierre)
+68, OpenVMS build support, see VMS/README.VMS for the details 
+    (Alexey Chupahin)
+70, GIF, do not try to use the global colmap if it does not exist
+    (Nuno Lopes, Pierre)
+72, gdImageAALine draws axis lines with two pixels width (Pierre)
+73, TTF usage doesn't work properly on Netware (Guenter Knauf, Scott MacVicar)
+74, gdImageArc CPU usage with large angles (Pierre)
+78, gdImageFilledRectangle regression fixed when used with reversed edges
+    (Pierre)
+86, Possible infinite loop in libgd/gd_png.c, flaw found by Xavier Roche
+    (Pierre)
+87, Fixed segfault when an invalid color index is present in a GIF 
+    image data, reported by Elliot <wccode at gmail dot com> (Pierre)
+89, Possible integer overflow in gdImageCreateTrueColor (Pierre)
+94, gdImageCreateXbm can crash if gdImageCreate fails (Pierre)
+
+GD 2.0.34 (2007-02-07)
+ 3, Initialize variables in tweenColorTest, fix cache
+ 4, gdImageFill, multiple segfaults with patterns or invalid arguments
+ 5, gdImageRectangle draws corners twice
+ 6, GIF Output does use the transparent color with truecolor images
+ 7, Multiple security issues in GIF loader
+ 8, gdIimageCopy doen't use the alpha channel
+ 9, Add autogen and and misc configure/makefile (Lars Hecking)
+10, gdImageFilledEllipse does not respect transparency
+11, gdImageCreateFromPng*  crashes with empty file
+12, gdImageCreateFromPngCrx, initialize the signature buffer not the
+    infile
+13, leak in jinit_2pass_quantizer (gd_topal.c)
+14, Added santiy checks for possible memory allocation errors
+15, gdImageCreatePaletteFromTrueColor, later color allocations overwrite
+    the palette colors (Rob Leslie)
+16, Obscure error on Sun's compiler in entities.tcl
+    (John Ellson/Graphviz)
+17, gdImageCreate, invalid gdFree call when overflow2 fails
+18, HWB_Diff, invalid usage of abs instead of fabs
+    (Nick Atty)
+19, Fixed gdImageCopyMergeGray when used with a true color image
+20, transparency preservation in gdImageCopyRotated
+21, Out of range checks in gdImageSetAAPixelColor
+22, gdFontCacheSetup does not stop on error
+23, Errors when gdImageStringFTEx is called with an empty string
+    (Kevin Scaldeferri)
+24, gdft.c, uninitialized variable "charmap" and avoid divide-by-zero
+    (John Ellson/Graphviz)
+25, DISABLE_THREADS to permit disabling of thread support
+    (John Ellson/Graphviz)
+26, dynamicGetbuf, sourceGetbuf must return 0 for errors and EOF
+27, gdSeek declaration is wrong
+29, Windows native makefile (Edin Kadribašić)
+30, restores the ability to recognize and handle a font with
+    Adobe-specific character encoding. Added gdFTEX_Adobe_Custom.
+31, Shared library support on cygwin (Dr. Volker Zell)
+32, Pattern-fill works incorrectly if tile is created via
+    gdImageCreateTruecolor (Ethan Merritt)
+33, malformed PNG image crashes  (CRC error)
+34, reading some gif images creates infinite loop
+36, gdImageFillToBorder crashes when used with alpha
+40, possible Buffer overflow in the gdImageStringFTEx function
+    in gdft.c (CVE-2007-0455) (Kees Cook)

Modified: trunk/Build/source/libs/gd/libgd-src/docs/README.TESTING
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/README.TESTING	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/README.TESTING	2017-01-18 23:13:46 UTC (rev 42987)
@@ -34,7 +34,7 @@
 I will certainly add a nice CMake option to give prefix later.
 
 What to do if tests fail on your platform and you use the last GD release? 
-either from your favourite distributions or from http://www.libgd.org or git?
+either from your favorite distributions or from http://www.libgd.org or git?
 
 If you use a packaged version of the GD Library (installed from RPM, deb or 
 ports, gentoo packages or any other packages format or distribution), please try
@@ -53,7 +53,7 @@
 Later versions will have an automatic post mode.
 
 If the tests run successfully, please report a bug to the maintainer of the
-packages (debian, bsd, ubuntu or whoever is responsible for the packages).
+packages (Debian, BSD, Ubuntu or whoever is responsible for the packages).
 
 Reasons of failures:
 Exception: SegFault: self explaining
@@ -62,9 +62,9 @@
                      have infinite loops when compiled against old versions
                      of the GD library (esp. 2.0.33 or earlier)
 
-Some features rely on floating point arithmetics and results may vary from
+Some features rely on floating point arithmetic and results may vary from
 one architecture to another.
 Examples:
-on i686,  gdimagerotate/bug00067 will faill. The result is still viusally 
+on i686, gdimagerotate/bug00067 will fail. The result is still visually
 acceptable but i686 default arithmetic mode will generate different results.
 Adding "-msse -mfpmath=sse" to CFLAGS will solve this difference.

Added: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/edge_detect_quick.jpg
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/edge_detect_quick.jpg
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/edge_detect_quick.jpg	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/edge_detect_quick.jpg	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/edge_detect_quick.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/jpeg
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/emboss.jpg
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/emboss.jpg
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/emboss.jpg	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/emboss.jpg	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/emboss.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/jpeg
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/mean_removal.jpg
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/mean_removal.jpg
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/mean_removal.jpg	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/mean_removal.jpg	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/mean_removal.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/jpeg
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/smooth.jpg
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/smooth.jpg
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/smooth.jpg	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/smooth.jpg	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/images/smooth.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/jpeg
\ No newline at end of property
Deleted: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/license.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/license.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/license.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,74 +0,0 @@
-Title: License
-
-Credits and license terms:
-
-> In order to resolve any possible confusion regarding the authorship of
-> gd, the following copyright statement covers all of the authors who
-> have required such a statement. If you are aware of any oversights in
-> this copyright notice, please contact Pierre-A. Joye who will be
-> pleased to correct them.
->
->    Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
->    2002, 2003, 2004 by Cold Spring Harbor Laboratory. Funded under
->    Grant P41-RR02188 by the National Institutes of Health.
->
->    Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
->    2004 by Boutell.Com, Inc.
->
->    Portions relating to GD2 format copyright 1999, 2000, 2001, 2002,
->    2003, 2004 Philip Warner.
->
->    Portions relating to PNG copyright 1999, 2000, 2001, 2002, 2003,
->    2004 Greg Roelofs.
->
->    Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002,
->    2003, 2004 John Ellson (ellson at graphviz.org).
->
->    Portions relating to gdft.c copyright 2001, 2002, 2003, 2004 John
->    Ellson (ellson at graphviz.org).
->
->    Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
->    Pierre-Alain Joye (pierre at libgd.org).
->
->    Portions relating to JPEG and to color quantization copyright
->    2000, 2001, 2002, 2003, 2004, Doug Becker and copyright (C) 1994,
->    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Thomas
->    G. Lane. This software is based in part on the work of the
->    Independent JPEG Group. See the file README-JPEG.TXT for more
->    information.
->
->    Portions relating to GIF compression copyright 1989 by Jef
->    Poskanzer and David Rowley, with modifications for thread safety
->    by Thomas Boutell.
->
->    Portions relating to GIF decompression copyright 1990, 1991, 1993
->    by David Koblas, with modifications for thread safety by Thomas
->    Boutell.
->
->    Portions relating to WBMP copyright 2000, 2001, 2002, 2003, 2004
->    Maurice Szmurlo and Johan Van den Brande.
->
->    Portions relating to GIF animations copyright 2004 Jaakko Hyvätti
->    (jaakko.hyvatti at iki.fi)
->
-> Permission has been granted to copy, distribute and modify gd in
-> any context without fee, including a commercial application,
-> provided that this notice is present in user-accessible supporting
-> documentation.
->
-> This does not affect your ownership of the derived work itself,
-> and the intent is to assure proper credit for the authors of gd,
-> not to interfere with your productive use of gd. If you have
-> questions, ask. "Derived works" includes all programs that utilize
-> the library. Credit must be given in user-accessible
-> documentation.
->
-> This software is provided "AS IS." The copyright holders disclaim
-> all warranties, either express or implied, including but not
-> limited to implied warranties of merchantability and fitness for a
-> particular purpose, with respect to this code and accompanying
-> documentation.
->
-> Although their code does not appear in the current release, the
-> authors also wish to thank Hutchison Avenue Software Corporation
-> for their prior contributions.

Added: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/.gitignore
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/.gitignore	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/.gitignore	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,2 @@
+Languages.txt
+Topics.txt

Deleted: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,113 +0,0 @@
-Format: 1.51
-
-# This is the Natural Docs languages file for this project.  If you change
-# anything here, it will apply to THIS PROJECT ONLY.  If you'd like to change
-# something for all your projects, edit the Languages.txt in Natural Docs'
-# Config directory instead.
-
-
-# You can prevent certain file extensions from being scanned like this:
-# Ignore Extensions: [extension] [extension] ...
-
-
-#-------------------------------------------------------------------------------
-# SYNTAX:
-#
-# Unlike other Natural Docs configuration files, in this file all comments
-# MUST be alone on a line.  Some languages deal with the # character, so you
-# cannot put comments on the same line as content.
-#
-# Also, all lists are separated with spaces, not commas, again because some
-# languages may need to use them.
-#
-# Language: [name]
-# Alter Language: [name]
-#    Defines a new language or alters an existing one.  Its name can use any
-#    characters.  If any of the properties below have an add/replace form, you
-#    must use that when using Alter Language.
-#
-#    The language Shebang Script is special.  It's entry is only used for
-#    extensions, and files with those extensions have their shebang (#!) lines
-#    read to determine the real language of the file.  Extensionless files are
-#    always treated this way.
-#
-#    The language Text File is also special.  It's treated as one big comment
-#    so you can put Natural Docs content in them without special symbols.  Also,
-#    if you don't specify a package separator, ignored prefixes, or enum value
-#    behavior, it will copy those settings from the language that is used most
-#    in the source tree.
-#
-# Extensions: [extension] [extension] ...
-# [Add/Replace] Extensions: [extension] [extension] ...
-#    Defines the file extensions of the language's source files.  You can
-#    redefine extensions found in the main languages file.  You can use * to
-#    mean any undefined extension.
-#
-# Shebang Strings: [string] [string] ...
-# [Add/Replace] Shebang Strings: [string] [string] ...
-#    Defines a list of strings that can appear in the shebang (#!) line to
-#    designate that it's part of the language.  You can redefine strings found
-#    in the main languages file.
-#
-# Ignore Prefixes in Index: [prefix] [prefix] ...
-# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ...
-#
-# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ...
-# [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ...
-#    Specifies prefixes that should be ignored when sorting symbols in an
-#    index.  Can be specified in general or for a specific topic type.
-#
-#------------------------------------------------------------------------------
-# For basic language support only:
-#
-# Line Comments: [symbol] [symbol] ...
-#    Defines a space-separated list of symbols that are used for line comments,
-#    if any.
-#
-# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ...
-#    Defines a space-separated list of symbol pairs that are used for block
-#    comments, if any.
-#
-# Package Separator: [symbol]
-#    Defines the default package separator symbol.  The default is a dot.
-#
-# [Topic Type] Prototype Enders: [symbol] [symbol] ...
-#    When defined, Natural Docs will attempt to get a prototype from the code
-#    immediately following the topic type.  It stops when it reaches one of
-#    these symbols.  Use \n for line breaks.
-#
-# Line Extender: [symbol]
-#    Defines the symbol that allows a prototype to span multiple lines if
-#    normally a line break would end it.
-#
-# Enum Values: [global|under type|under parent]
-#    Defines how enum values are referenced.  The default is global.
-#    global       - Values are always global, referenced as 'value'.
-#    under type   - Values are under the enum type, referenced as
-#               'package.enum.value'.
-#    under parent - Values are under the enum's parent, referenced as
-#               'package.value'.
-#
-# Perl Package: [perl package]
-#    Specifies the Perl package used to fine-tune the language behavior in ways
-#    too complex to do in this file.
-#
-#------------------------------------------------------------------------------
-# For full language support only:
-#
-# Full Language Support: [perl package]
-#    Specifies the Perl package that has the parsing routines necessary for full
-#    language support.
-#
-#-------------------------------------------------------------------------------
-
-# The following languages are defined in the main file, if you'd like to alter
-# them:
-#
-#    Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python,
-#    PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile,
-#    ActionScript, ColdFusion, R, Fortran
-
-# If you add a language that you think would be useful to other developers
-# and should be included in Natural Docs by default, please e-mail it to
-# languages [at] naturaldocs [dot] org.

Modified: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,4 @@
-Format: 1.51
+Format: 1.52
 
 
 # You can add a title and sub-title to your menu like this:
@@ -46,42 +46,42 @@
 # --------------------------------------------------------------------------
 
 
-File: About LibGD 2.2.3  (preamble.txt)
+File: About LibGD 2.3.0-dev  (no auto-title, preamble.txt)
+
+Group: Image Formats  {
+
+   File: BMP IO  (no auto-title, gd_bmp.c)
+   File: GD IO  (no auto-title, gd_gd.c)
+   File: GD2 IO  (no auto-title, gd_gd2.c)
+   File: GIF Input  (no auto-title, gd_gif_in.c)
+   File: GIF Output  (no auto-title, gd_gif_out.c)
+   File: JPEG IO  (no auto-title, gd_jpeg.c)
+   File: PNG IO  (no auto-title, gd_png.c)
+   File: TGA Input  (no auto-title, gd_tga.c)
+   File: TIFF IO  (no auto-title, gd_tiff.c)
+   File: WBMP IO  (no auto-title, gd_wbmp.c)
+   File: WebP IO  (no auto-title, gd_webp.c)
+   File: XBM IO  (no auto-title, gd_xbm.c)
+   File: XPM Input  (no auto-title, gdxpm.c)
+   }  # Group: Image Formats
+
 File: gd.c  (gd.c)
 File: gd.h  (gd.h)
-File: gd_bmp.c  (gd_bmp.c)
 File: gd_crop.c  (gd_crop.c)
 File: gd_filename.c  (gd_filename.c)
 File: gd_filter.c  (gd_filter.c)
-File: gd_gd.c  (gd_gd.c)
-File: gd_gd2.c  (gd_gd2.c)
-File: gd_gif_in.c  (gd_gif_in.c)
-File: gd_gif_out.c  (gd_gif_out.c)
 File: gd_interpolation.c  (gd_interpolation.c)
 File: gd_io.h  (gd_io.h)
 File: gd_io_dp.c  (gd_io_dp.c)
-File: gd_jpeg.c  (gd_jpeg.c)
-File: gd_png.c  (gd_png.c)
 File: gd_ss.c  (gd_ss.c)
-File: gd_tga.c  (gd_tga.c)
-File: gd_tiff.c  (gd_tiff.c)
 File: gd_topal.c  (gd_topal.c)
 File: gd_transform.c  (gd_transform.c)
 File: gd_version.c  (gd_version.c)
-File: gd_wbmp.c  (gd_wbmp.c)
-File: gd_webp.c  (gd_webp.c)
-File: gd_xbm.c  (gd_xbm.c)
 File: gdColorMapLookup  (gd_color_map.c)
-File: gdFontGetGiant  (gdfontg.c)
-File: gdFontGetLarge  (gdfontl.c)
-File: gdFontGetMediumBold  (gdfontmb.c)
-File: gdFontGetSmall  (gdfonts.c)
-File: gdFontGetTiny  (gdfontt.c)
 File: gdFree  (gdhelpers.c)
 File: gdft.c  (gdft.c)
 File: gdfx.c  (gdfx.c)
 File: gdImageColorMatch  (gd_color_match.c)
-File: gdImageCreateFromXpm  (gdxpm.c)
 File: gdImageNeuQuant  (gd_nnquant.c)
 File: gdNewFileCtx  (gd_io_file.c)
 File: gdNewSSCtx  (gd_io_ss.c)
@@ -88,6 +88,15 @@
 File: License  (license.txt)
 File: Matrix  (gd_matrix.c)
 
+Group: Built-in Fonts  {
+
+   File: Giant Font  (no auto-title, gdfontg.c)
+   File: Large Font  (no auto-title, gdfontl.c)
+   File: Medium Bold Font  (no auto-title, gdfontmb.c)
+   File: Small Font  (no auto-title, gdfonts.c)
+   File: Tiny Font  (no auto-title, gdfontt.c)
+   }  # Group: Built-in Fonts
+
 Group: Index  {
 
    Constant Index: Constants

Deleted: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,81 +0,0 @@
-Format: 1.51
-
-# This is the Natural Docs topics file for this project.  If you change anything
-# here, it will apply to THIS PROJECT ONLY.  If you'd like to change something
-# for all your projects, edit the Topics.txt in Natural Docs' Config directory
-# instead.
-
-
-# If you'd like to prevent keywords from being recognized by Natural Docs, you
-# can do it like this:
-# Ignore Keywords: [keyword], [keyword], ...
-#
-# Or you can use the list syntax like how they are defined:
-# Ignore Keywords:
-#    [keyword]
-#    [keyword], [plural keyword]
-#    ...
-
-
-#-------------------------------------------------------------------------------
-# SYNTAX:
-#
-# Topic Type: [name]
-# Alter Topic Type: [name]
-#    Creates a new topic type or alters one from the main file.  Each type gets
-#    its own index and behavior settings.  Its name can have letters, numbers,
-#    spaces, and these charaters: - / . '
-#
-# Plural: [name]
-#    Sets the plural name of the topic type, if different.
-#
-# Keywords:
-#    [keyword]
-#    [keyword], [plural keyword]
-#    ...
-#    Defines or adds to the list of keywords for the topic type.  They may only
-#    contain letters, numbers, and spaces and are not case sensitive.  Plural
-#    keywords are used for list topics.  You can redefine keywords found in the
-#    main topics file.
-#
-# Index: [yes|no]
-#    Whether the topics get their own index.  Defaults to yes.  Everything is
-#    included in the general index regardless of this setting.
-#
-# Scope: [normal|start|end|always global]
-#    How the topics affects scope.  Defaults to normal.
-#    normal        - Topics stay within the current scope.
-#    start         - Topics start a new scope for all the topics beneath it,
-#                    like class topics.
-#    end           - Topics reset the scope back to global for all the topics
-#                    beneath it.
-#    always global - Topics are defined as global, but do not change the scope
-#                    for any other topics.
-#
-# Class Hierarchy: [yes|no]
-#    Whether the topics are part of the class hierarchy.  Defaults to no.
-#
-# Page Title If First: [yes|no]
-#    Whether the topic's title becomes the page title if it's the first one in
-#    a file.  Defaults to no.
-#
-# Break Lists: [yes|no]
-#    Whether list topics should be broken into individual topics in the output.
-#    Defaults to no.
-#
-# Can Group With: [type], [type], ...
-#    Defines a list of topic types that this one can possibly be grouped with.
-#    Defaults to none.
-#-------------------------------------------------------------------------------
-
-# The following topics are defined in the main file, if you'd like to alter
-# their behavior or add keywords:
-#
-#    Generic, Class, Interface, Section, File, Group, Function, Variable,
-#    Property, Type, Constant, Enumeration, Event, Delegate, Macro,
-#    Database, Database Table, Database View, Database Index, Database
-#    Cursor, Database Trigger, Cookie, Build Target
-
-# If you add something that you think would be useful to other developers
-# and should be included in Natural Docs by default, please e-mail it to
-# topics [at] naturaldocs [dot] org.

Added: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/libgd.css
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/libgd.css	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/libgd.css	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,9 @@
+/*
+Custom styles for the generated HTML, which are supposed to override the default
+styles
+*/
+
+p {
+    text-indent: 0;
+    margin-bottom: 1em;
+}

Modified: trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh	2017-01-18 23:13:46 UTC (rev 42987)
@@ -60,7 +60,7 @@
 perl nobgd.pl ../../src/ tmp/
 
 # Add the external docs.
-cp license.txt tmp/
+echo "Title: License" | cat - ../../COPYING > tmp/license.txt
 sed -e "s/@VERSION@/$VERSION/g" preamble.txt > tmp/preamble.txt
 # ^^^ hack to get the version number in the docs.
 
@@ -67,8 +67,10 @@
 # Run naturaldocs to create the manual.
 $(nd) --rebuild --rebuild-output --documented-only \
     -i tmp/ \
+    -img images/ \
     -o html html  \
-    --project project/
+    --project project/ \
+    -s Default libgd
 
 # And cleanup the temp files.
 rm -rf Data tmp

Deleted: trunk/Build/source/libs/gd/libgd-src/examples/Makefile
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/examples/Makefile	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/examples/Makefile	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,498 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.0
-
-# Default target executed when no arguments are given to make.
-default_target: all
-.PHONY : default_target
-
-# Allow only one "make -f Makefile2" at a time, but pass parallelism.
-.NOTPARALLEL:
-.PHONY : .NOTPARALLEL
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-# A target that is always out of date.
-cmake_force:
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/pierre/project/libgd
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/pierre/project/libgd
-
-#=============================================================================
-# Targets provided globally by CMake.
-
-# Special rule for the target edit_cache
-edit_cache:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
-	/usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
-.PHONY : edit_cache
-
-# Special rule for the target edit_cache
-edit_cache/fast: edit_cache
-.PHONY : edit_cache/fast
-
-# Special rule for the target install
-install: preinstall
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
-	/usr/bin/cmake -P cmake_install.cmake
-.PHONY : install
-
-# Special rule for the target install
-install/fast: preinstall/fast
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
-	/usr/bin/cmake -P cmake_install.cmake
-.PHONY : install/fast
-
-# Special rule for the target install/local
-install/local: preinstall
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
-	/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
-.PHONY : install/local
-
-# Special rule for the target install/local
-install/local/fast: install/local
-.PHONY : install/local/fast
-
-# Special rule for the target install/strip
-install/strip: preinstall
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
-	/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
-.PHONY : install/strip
-
-# Special rule for the target install/strip
-install/strip/fast: install/strip
-.PHONY : install/strip/fast
-
-# Special rule for the target list_install_components
-list_install_components:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
-.PHONY : list_install_components
-
-# Special rule for the target list_install_components
-list_install_components/fast: list_install_components
-.PHONY : list_install_components/fast
-
-# Special rule for the target package
-package: preinstall
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..."
-	cd /home/pierre/project/libgd && /usr/bin/cpack --config ./CPackConfig.cmake
-.PHONY : package
-
-# Special rule for the target package
-package/fast: package
-.PHONY : package/fast
-
-# Special rule for the target package_source
-package_source:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..."
-	cd /home/pierre/project/libgd && /usr/bin/cpack --config ./CPackSourceConfig.cmake /home/pierre/project/libgd/CPackSourceConfig.cmake
-.PHONY : package_source
-
-# Special rule for the target package_source
-package_source/fast: package_source
-.PHONY : package_source/fast
-
-# Special rule for the target rebuild_cache
-rebuild_cache:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
-	/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-.PHONY : rebuild_cache
-
-# Special rule for the target rebuild_cache
-rebuild_cache/fast: rebuild_cache
-.PHONY : rebuild_cache/fast
-
-# Special rule for the target test
-test:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..."
-	/usr/bin/ctest --force-new-ctest-process $(ARGS)
-.PHONY : test
-
-# Special rule for the target test
-test/fast: test
-.PHONY : test/fast
-
-# The main all target
-all: cmake_check_build_system
-	cd /home/pierre/project/libgd && $(CMAKE_COMMAND) -E cmake_progress_start /home/pierre/project/libgd/CMakeFiles /home/pierre/project/libgd/examples/CMakeFiles/progress.marks
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/all
-	$(CMAKE_COMMAND) -E cmake_progress_start /home/pierre/project/libgd/CMakeFiles 0
-.PHONY : all
-
-# The main clean target
-clean:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/clean
-.PHONY : clean
-
-# The main clean target
-clean/fast: clean
-.PHONY : clean/fast
-
-# Prepare targets for installation.
-preinstall: all
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/preinstall
-.PHONY : preinstall
-
-# Prepare targets for installation.
-preinstall/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/preinstall
-.PHONY : preinstall/fast
-
-# clear depends
-depend:
-	cd /home/pierre/project/libgd && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
-.PHONY : depend
-
-# Convenience name for target.
-examples/CMakeFiles/arc.dir/rule:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/arc.dir/rule
-.PHONY : examples/CMakeFiles/arc.dir/rule
-
-# Convenience name for target.
-arc: examples/CMakeFiles/arc.dir/rule
-.PHONY : arc
-
-# fast build rule for target.
-arc/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/build
-.PHONY : arc/fast
-
-# Convenience name for target.
-examples/CMakeFiles/copyrotated.dir/rule:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/copyrotated.dir/rule
-.PHONY : examples/CMakeFiles/copyrotated.dir/rule
-
-# Convenience name for target.
-copyrotated: examples/CMakeFiles/copyrotated.dir/rule
-.PHONY : copyrotated
-
-# fast build rule for target.
-copyrotated/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/build
-.PHONY : copyrotated/fast
-
-# Convenience name for target.
-examples/CMakeFiles/crop.dir/rule:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/crop.dir/rule
-.PHONY : examples/CMakeFiles/crop.dir/rule
-
-# Convenience name for target.
-crop: examples/CMakeFiles/crop.dir/rule
-.PHONY : crop
-
-# fast build rule for target.
-crop/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/build
-.PHONY : crop/fast
-
-# Convenience name for target.
-examples/CMakeFiles/flip.dir/rule:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/flip.dir/rule
-.PHONY : examples/CMakeFiles/flip.dir/rule
-
-# Convenience name for target.
-flip: examples/CMakeFiles/flip.dir/rule
-.PHONY : flip
-
-# fast build rule for target.
-flip/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/build
-.PHONY : flip/fast
-
-# Convenience name for target.
-examples/CMakeFiles/gif.dir/rule:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/gif.dir/rule
-.PHONY : examples/CMakeFiles/gif.dir/rule
-
-# Convenience name for target.
-gif: examples/CMakeFiles/gif.dir/rule
-.PHONY : gif
-
-# fast build rule for target.
-gif/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/build
-.PHONY : gif/fast
-
-# Convenience name for target.
-examples/CMakeFiles/nnquant.dir/rule:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/nnquant.dir/rule
-.PHONY : examples/CMakeFiles/nnquant.dir/rule
-
-# Convenience name for target.
-nnquant: examples/CMakeFiles/nnquant.dir/rule
-.PHONY : nnquant
-
-# fast build rule for target.
-nnquant/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/build
-.PHONY : nnquant/fast
-
-# Convenience name for target.
-examples/CMakeFiles/tgaread.dir/rule:
-	cd /home/pierre/project/libgd && $(MAKE) -f CMakeFiles/Makefile2 examples/CMakeFiles/tgaread.dir/rule
-.PHONY : examples/CMakeFiles/tgaread.dir/rule
-
-# Convenience name for target.
-tgaread: examples/CMakeFiles/tgaread.dir/rule
-.PHONY : tgaread
-
-# fast build rule for target.
-tgaread/fast:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/build
-.PHONY : tgaread/fast
-
-arc.o: arc.c.o
-.PHONY : arc.o
-
-# target to build an object file
-arc.c.o:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/arc.c.o
-.PHONY : arc.c.o
-
-arc.i: arc.c.i
-.PHONY : arc.i
-
-# target to preprocess a source file
-arc.c.i:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/arc.c.i
-.PHONY : arc.c.i
-
-arc.s: arc.c.s
-.PHONY : arc.s
-
-# target to generate assembly for a file
-arc.c.s:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/arc.dir/build.make examples/CMakeFiles/arc.dir/arc.c.s
-.PHONY : arc.c.s
-
-copyrotated.o: copyrotated.c.o
-.PHONY : copyrotated.o
-
-# target to build an object file
-copyrotated.c.o:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/copyrotated.c.o
-.PHONY : copyrotated.c.o
-
-copyrotated.i: copyrotated.c.i
-.PHONY : copyrotated.i
-
-# target to preprocess a source file
-copyrotated.c.i:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/copyrotated.c.i
-.PHONY : copyrotated.c.i
-
-copyrotated.s: copyrotated.c.s
-.PHONY : copyrotated.s
-
-# target to generate assembly for a file
-copyrotated.c.s:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/copyrotated.dir/build.make examples/CMakeFiles/copyrotated.dir/copyrotated.c.s
-.PHONY : copyrotated.c.s
-
-crop.o: crop.c.o
-.PHONY : crop.o
-
-# target to build an object file
-crop.c.o:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/crop.c.o
-.PHONY : crop.c.o
-
-crop.i: crop.c.i
-.PHONY : crop.i
-
-# target to preprocess a source file
-crop.c.i:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/crop.c.i
-.PHONY : crop.c.i
-
-crop.s: crop.c.s
-.PHONY : crop.s
-
-# target to generate assembly for a file
-crop.c.s:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/crop.dir/build.make examples/CMakeFiles/crop.dir/crop.c.s
-.PHONY : crop.c.s
-
-flip.o: flip.c.o
-.PHONY : flip.o
-
-# target to build an object file
-flip.c.o:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/flip.c.o
-.PHONY : flip.c.o
-
-flip.i: flip.c.i
-.PHONY : flip.i
-
-# target to preprocess a source file
-flip.c.i:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/flip.c.i
-.PHONY : flip.c.i
-
-flip.s: flip.c.s
-.PHONY : flip.s
-
-# target to generate assembly for a file
-flip.c.s:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/flip.dir/build.make examples/CMakeFiles/flip.dir/flip.c.s
-.PHONY : flip.c.s
-
-gif.o: gif.c.o
-.PHONY : gif.o
-
-# target to build an object file
-gif.c.o:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/gif.c.o
-.PHONY : gif.c.o
-
-gif.i: gif.c.i
-.PHONY : gif.i
-
-# target to preprocess a source file
-gif.c.i:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/gif.c.i
-.PHONY : gif.c.i
-
-gif.s: gif.c.s
-.PHONY : gif.s
-
-# target to generate assembly for a file
-gif.c.s:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/gif.dir/build.make examples/CMakeFiles/gif.dir/gif.c.s
-.PHONY : gif.c.s
-
-nnquant.o: nnquant.c.o
-.PHONY : nnquant.o
-
-# target to build an object file
-nnquant.c.o:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/nnquant.c.o
-.PHONY : nnquant.c.o
-
-nnquant.i: nnquant.c.i
-.PHONY : nnquant.i
-
-# target to preprocess a source file
-nnquant.c.i:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/nnquant.c.i
-.PHONY : nnquant.c.i
-
-nnquant.s: nnquant.c.s
-.PHONY : nnquant.s
-
-# target to generate assembly for a file
-nnquant.c.s:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/nnquant.dir/build.make examples/CMakeFiles/nnquant.dir/nnquant.c.s
-.PHONY : nnquant.c.s
-
-tgaread.o: tgaread.c.o
-.PHONY : tgaread.o
-
-# target to build an object file
-tgaread.c.o:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/tgaread.c.o
-.PHONY : tgaread.c.o
-
-tgaread.i: tgaread.c.i
-.PHONY : tgaread.i
-
-# target to preprocess a source file
-tgaread.c.i:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/tgaread.c.i
-.PHONY : tgaread.c.i
-
-tgaread.s: tgaread.c.s
-.PHONY : tgaread.s
-
-# target to generate assembly for a file
-tgaread.c.s:
-	cd /home/pierre/project/libgd && $(MAKE) -f examples/CMakeFiles/tgaread.dir/build.make examples/CMakeFiles/tgaread.dir/tgaread.c.s
-.PHONY : tgaread.c.s
-
-# Help Target
-help:
-	@echo "The following are some of the valid targets for this Makefile:"
-	@echo "... all (the default if no target is provided)"
-	@echo "... clean"
-	@echo "... depend"
-	@echo "... arc"
-	@echo "... copyrotated"
-	@echo "... crop"
-	@echo "... edit_cache"
-	@echo "... flip"
-	@echo "... gif"
-	@echo "... install"
-	@echo "... install/local"
-	@echo "... install/strip"
-	@echo "... list_install_components"
-	@echo "... nnquant"
-	@echo "... package"
-	@echo "... package_source"
-	@echo "... rebuild_cache"
-	@echo "... test"
-	@echo "... tgaread"
-	@echo "... arc.o"
-	@echo "... arc.i"
-	@echo "... arc.s"
-	@echo "... copyrotated.o"
-	@echo "... copyrotated.i"
-	@echo "... copyrotated.s"
-	@echo "... crop.o"
-	@echo "... crop.i"
-	@echo "... crop.s"
-	@echo "... flip.o"
-	@echo "... flip.i"
-	@echo "... flip.s"
-	@echo "... gif.o"
-	@echo "... gif.i"
-	@echo "... gif.s"
-	@echo "... nnquant.o"
-	@echo "... nnquant.i"
-	@echo "... nnquant.s"
-	@echo "... tgaread.o"
-	@echo "... tgaread.i"
-	@echo "... tgaread.s"
-.PHONY : help
-
-
-
-#=============================================================================
-# Special targets to cleanup operation of make.
-
-# Special rule to run CMake to check the build system integrity.
-# No rule that depends on this can have commands that come from listfiles
-# because they might be regenerated.
-cmake_check_build_system:
-	cd /home/pierre/project/libgd && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
-.PHONY : cmake_check_build_system
-

Modified: trunk/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4	2017-01-18 23:13:46 UTC (rev 42987)
@@ -19,10 +19,10 @@
 #   is necessary on AIX to use the special cc_r compiler alias.)
 #
 #   NOTE: You are assumed to not only compile your program with these flags,
-#   but also link it with them as well. e.g. you should link with
+#   but also to link with them as well. For example, you might link with
 #   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
 #
-#   If you are only building threads programs, you may wish to use these
+#   If you are only building threaded programs, you may wish to use these
 #   variables in your default LIBS, CFLAGS, and CC:
 #
 #     LIBS="$PTHREAD_LIBS $LIBS"
@@ -30,8 +30,8 @@
 #     CC="$PTHREAD_CC"
 #
 #   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
-#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
-#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
+#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
 #
 #   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
 #   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
@@ -82,35 +82,40 @@
 #   modified version of the Autoconf Macro, you may extend this special
 #   exception to the GPL to apply to your modified version as well.
 
-#serial 20
+#serial 23
 
 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
 AC_DEFUN([AX_PTHREAD], [
 AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_SED])
 AC_LANG_PUSH([C])
 ax_pthread_ok=no
 
 # We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
+# requires special compiler flags (e.g. on Tru64 or Sequent).
 # It gets checked for in the link test anyway.
 
 # First of all, check if the user has set any of the PTHREAD_LIBS,
 # etcetera environment variables, and if threads linking works using
 # them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
-        AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
-        AC_MSG_RESULT($ax_pthread_ok)
-        if test x"$ax_pthread_ok" = xno; then
+        AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
+        AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
+        AC_MSG_RESULT([$ax_pthread_ok])
+        if test "x$ax_pthread_ok" = "xno"; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
         fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 fi
 
 # We must check for the threads library under a number of different
@@ -123,7 +128,7 @@
 # which indicates that we try without any flags at all, and "pthread-config"
 # which is a program returning the flags for the Pth emulation library.
 
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
 
 # The ordering *is* (sometimes) important.  Some notes on the
 # individual items follow:
@@ -132,68 +137,225 @@
 # none: in case threads are in libc; should be tried before -Kthread and
 #       other compiler flags to prevent continual compiler warnings
 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
 # -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
 # pthread: Linux, etcetera
 # --thread-safe: KAI C++
 # pthread-config: use pthread-config program (for GNU Pth library)
 
-case ${host_os} in
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
+            [
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+            ],
+            [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
+        ;;
+
         solaris*)
 
         # On Solaris (at least, for some versions), libc contains stubbed
         # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
 
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
         ;;
+esac
 
-        darwin*)
-        ax_pthread_flags="-pthread $ax_pthread_flags"
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
+
+AS_IF([test "x$GCC" = "xyes"],
+      [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
+
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
+
+case $host_os in
+        darwin* | hpux* | linux* | osf* | solaris*)
+        ax_pthread_check_macro="_REENTRANT"
         ;;
+
+        aix*)
+        ax_pthread_check_macro="_THREAD_SAFE"
+        ;;
+
+        *)
+        ax_pthread_check_macro="--"
+        ;;
 esac
+AS_IF([test "x$ax_pthread_check_macro" = "x--"],
+      [ax_pthread_check_cond=0],
+      [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
 
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
+# Are we compiling with Clang?
 
-        case $flag in
+AC_CACHE_CHECK([whether $CC is Clang],
+    [ax_cv_PTHREAD_CLANG],
+    [ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
+            [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+            ],
+            [ax_cv_PTHREAD_CLANG=yes])
+     fi
+    ])
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        PTHREAD_CFLAGS="-pthread"
+        PTHREAD_LIBS=
+
+        ax_pthread_ok=yes
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                    [ac_link="$ax_pthread_2step_ac_link"
+                     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                         [break])
+                    ])
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+            ])
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+        case $ax_pthread_try_flag in
                 none)
                 AC_MSG_CHECKING([whether pthreads work without any flags])
                 ;;
 
+                -mt,pthread)
+                AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
+                PTHREAD_CFLAGS="-mt"
+                PTHREAD_LIBS="-lpthread"
+                ;;
+
                 -*)
-                AC_MSG_CHECKING([whether pthreads work with $flag])
-                PTHREAD_CFLAGS="$flag"
+                AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
                 ;;
 
                 pthread-config)
-                AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
-                if test x"$ax_pthread_config" = xno; then continue; fi
+                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
+                AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
                 PTHREAD_CFLAGS="`pthread-config --cflags`"
                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
                 ;;
 
                 *)
-                AC_MSG_CHECKING([for the pthreads library -l$flag])
-                PTHREAD_LIBS="-l$flag"
+                AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
                 ;;
         esac
 
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
         # Check for various functions.  We must include pthread.h,
         # since some functions may be macros.  (On the Sequent, we
@@ -204,7 +366,11 @@
         # pthread_cleanup_push because it is one of the few pthread
         # functions on Solaris that doesn't have a non-functional libc stub.
         # We try pthread_create on general principles.
+
         AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
                         static void routine(void *a) { a = 0; }
                         static void *start_routine(void *a) { return a; }],
                        [pthread_t th; pthread_attr_t attr;
@@ -213,16 +379,14 @@
                         pthread_attr_init(&attr);
                         pthread_cleanup_push(routine, 0);
                         pthread_cleanup_pop(0) /* ; */])],
-                [ax_pthread_ok=yes],
-                [])
+            [ax_pthread_ok=yes],
+            [])
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
-        AC_MSG_RESULT($ax_pthread_ok)
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
+        AC_MSG_RESULT([$ax_pthread_ok])
+        AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
 
         PTHREAD_LIBS=""
         PTHREAD_CFLAGS=""
@@ -230,70 +394,74 @@
 fi
 
 # Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
         # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-        AC_MSG_CHECKING([for joinable pthread attribute])
-        attr_name=unknown
-        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
-                           [int attr = $attr; return attr /* ; */])],
-                [attr_name=$attr; break],
-                [])
-        done
-        AC_MSG_RESULT($attr_name)
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
-                               [Define to necessary symbol if this constant
-                                uses a non-standard name on your system.])
-        fi
+        AC_CACHE_CHECK([for joinable pthread attribute],
+            [ax_cv_PTHREAD_JOINABLE_ATTR],
+            [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+                                                 [int attr = $ax_pthread_attr; return attr /* ; */])],
+                                [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
+                                [])
+             done
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"],
+              [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
+                                  [$ax_cv_PTHREAD_JOINABLE_ATTR],
+                                  [Define to necessary symbol if this constant
+                                   uses a non-standard name on your system.])
+               ax_pthread_joinable_attr_defined=yes
+              ])
 
-        AC_MSG_CHECKING([if more special flags are required for pthreads])
-        flag=no
-        case ${host_os} in
-            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-            osf* | hpux*) flag="-D_REENTRANT";;
-            solaris*)
-            if test "$GCC" = "yes"; then
-                flag="-D_REENTRANT"
-            else
-                flag="-mt -D_REENTRANT"
-            fi
-            ;;
-        esac
-        AC_MSG_RESULT(${flag})
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
+        AC_CACHE_CHECK([whether more special flags are required for pthreads],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"],
+              [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes])
 
         AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
-            ax_cv_PTHREAD_PRIO_INHERIT, [
-                AC_LINK_IFELSE([
-                    AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=no])
+            [ax_cv_PTHREAD_PRIO_INHERIT],
+            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+                                             [[int i = PTHREAD_PRIO_INHERIT;]])],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=no])
             ])
-        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
-            AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
+        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               test "x$ax_pthread_prio_inherit_defined" != "xyes"],
+              [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
+               ax_pthread_prio_inherit_defined=yes
+              ])
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         # More AIX lossage: compile with *_r variant
-        if test "x$GCC" != xyes; then
+        if test "x$GCC" != "xyes"; then
             case $host_os in
                 aix*)
                 AS_CASE(["x/$CC"],
-                  [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
-                  [#handle absolute path differently from PATH based program lookup
-                   AS_CASE(["x$CC"],
-                     [x/*],
-                     [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
-                     [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+                    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+                    [#handle absolute path differently from PATH based program lookup
+                     AS_CASE(["x$CC"],
+                         [x/*],
+                         [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+                         [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
                 ;;
             esac
         fi
@@ -301,13 +469,13 @@
 
 test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
 
-AC_SUBST(PTHREAD_LIBS)
-AC_SUBST(PTHREAD_CFLAGS)
-AC_SUBST(PTHREAD_CC)
+AC_SUBST([PTHREAD_LIBS])
+AC_SUBST([PTHREAD_CFLAGS])
+AC_SUBST([PTHREAD_CC])
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
-        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+if test "x$ax_pthread_ok" = "xyes"; then
+        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
         :
 else
         ax_pthread_ok=no

Modified: trunk/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -8,6 +8,7 @@
 	gd_color.h
 	gd_color_map.c
 	gd_color_map.h
+	gd_color_match.c
 	gd_crop.c
 	gd_filename.c
 	gd_filter.c
@@ -15,6 +16,7 @@
 	gd_gd2.c
 	gd_gif_in.c
 	gd_gif_out.c
+	gd_intern.h
 	gd_interpolation.c
 	gd_io.c
 	gd_io.h
@@ -76,10 +78,19 @@
 include(GNUInstallDirs)
 
 if (BUILD_SHARED_LIBS)
-  add_library(${GD_LIB} ${LIBGD_SRC_FILES})
+	add_library(${GD_LIB} ${LIBGD_SRC_FILES})
+	set_target_properties(${GD_LIB} PROPERTIES
+		C_VISIBILITY_PRESET hidden
+		CXX_VISIBILITY_PRESET hidden
+	)
 endif()
 
-add_library(${GD_LIB_STATIC} STATIC  ${LIBGD_SRC_FILES})
+if (BUILD_STATIC_LIBS)
+	add_library(${GD_LIB_STATIC} STATIC ${LIBGD_SRC_FILES})
+	if (UNIX)
+		set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
+	endif()
+endif()
 
 if (WIN32 AND NOT MINGW AND NOT MSYS)
   #	SET_TARGET_PROPERTIES(${GD_LIB} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:msvcrt.lib")
@@ -86,10 +97,6 @@
   SET_PROPERTY(TARGET ${GD_LIB_STATIC} APPEND PROPERTY COMPILE_DEFINITIONS NONDLL=1)
 ENDIF(WIN32 AND NOT MINGW AND NOT MSYS)
 
-if(UNIX)
-  set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
-endif()
-
 if (MINGW OR MSYS)
 	ADD_DEFINITIONS("-mms-bitfields")
 	set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
@@ -97,12 +104,25 @@
 
 INCLUDE_DIRECTORIES(BEFORE "${PROJECT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${GD_SOURCE_DIR}/src")
 
+SET(LIBGD_DEP_LIBS
+	${ZLIB_LIBRARIES}
+	${FREETYPE_LIBRARIES}
+	${PNG_LIBRARIES}
+	${ICONV_LIBRARIES}
+	${LIQ_LIBRARIES}
+	${JPEG_LIBRARIES}
+	${TIFF_LIBRARIES}
+	${XPM_LIBRARIES}
+	${FONTCONFIG_LIBRARY}
+	${WEBP_LIBRARIES}
+)
 if (BUILD_SHARED_LIBS)
-  target_link_libraries(${GD_LIB} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${WEBP_LIBRARIES})
+	target_link_libraries(${GD_LIB} ${LIBGD_DEP_LIBS})
 endif()
+if (BUILD_STATIC_LIBS)
+	target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS})
+endif()
 
-target_link_libraries(${GD_LIB_STATIC} ${ZLIB_LIBRARIES} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${ICONV_LIBRARIES} ${LIQ_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARY} ${WEBP_LIBRARIES} )
-
 set(GD_PROGRAMS gdcmpgif)
 
 if (PNG_FOUND)
@@ -129,11 +149,13 @@
     endif()
 endforeach(program)
 
+set(GD_INSTALL_TARGETS ${GD_PROGRAMS})
 if (BUILD_SHARED_LIBS)
-  set(GD_INSTALL_TARGETS ${GD_LIB} ${GD_LIB_STATIC} ${GD_PROGRAMS})
-else()
-  set(GD_INSTALL_TARGETS ${GD_LIB_STATIC} ${GD_PROGRAMS})
+	set(GD_INSTALL_TARGETS ${GD_INSTALL_TARGETS} ${GD_LIB})
 endif()
+if (BUILD_STATIC_LIBS)
+	set(GD_INSTALL_TARGETS ${GD_INSTALL_TARGETS} ${GD_LIB_STATIC})
+endif()
 
 install(TARGETS ${GD_INSTALL_TARGETS}
         RUNTIME DESTINATION bin

Modified: trunk/Build/source/libs/gd/libgd-src/src/Makefile.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/Makefile.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/Makefile.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -46,10 +46,12 @@
 libgd_la_SOURCES = \
 	bmp.h \
 	gd.c \
+	gd.h \
 	gd_bmp.c \
 	gd_color.c \
 	gd_color.h \
 	gd_color_map.c \
+	gd_color_map.h \
 	gd_color_match.c \
 	gd_crop.c \
 	gd_filename.c \
@@ -61,6 +63,7 @@
 	gd_intern.h \
 	gd_interpolation.c \
 	gd_io.c \
+	gd_io.h \
 	gd_io_dp.c \
 	gd_io_file.c \
 	gd_io_ss.c \
@@ -83,13 +86,20 @@
 	gd_webp.c \
 	gd_xbm.c \
 	gdcache.c \
+	gdcache.h \
 	gdfontg.c \
+	gdfontg.h \
 	gdfontl.c \
+	gdfontl.h \
 	gdfontmb.c \
+	gdfontmb.h \
 	gdfonts.c \
+	gdfonts.h \
 	gdfontt.c \
+	gdfontt.h \
 	gdft.c \
 	gdfx.c \
+	gdfx.h \
 	gdhelpers.c \
 	gdhelpers.h \
 	gdkanji.c \

Modified: trunk/Build/source/libs/gd/libgd-src/src/circletexttest.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/circletexttest.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/circletexttest.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -13,7 +13,9 @@
 	return 0;
 #else
 	char *error;
+#ifdef HAVE_LIBJPEG
 	FILE *in = 0;
+#endif
 	FILE *out;
 	gdImagePtr im;
 	int radius;

Modified: trunk/Build/source/libs/gd/libgd-src/src/config.hin
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/config.hin	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/config.hin	2017-01-18 23:13:46 UTC (rev 42987)
@@ -103,8 +103,7 @@
 /* Define as const if the declaration of iconv() needs const. */
 #undef ICONV_CONST
 
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
 #undef LT_OBJDIR
 
 /* Name of package */

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -71,6 +71,10 @@
 extern const int gdCosT[];
 extern const int gdSinT[];
 
+/**
+ * Group: Error Handling
+ */
+
 void gd_stderr_error(int priority, const char *format, va_list args)
 {
 	switch (priority) {
@@ -139,11 +143,11 @@
 static void gdImageBrushApply (gdImagePtr im, int x, int y);
 static void gdImageTileApply (gdImagePtr im, int x, int y);
 
-/*
-	Function: gdImageGetTrueColorPixel
-*/
 BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y);
 
+/**
+ * Group: Creation and Destruction
+ */
 
 /*
     Function: gdImageCreate
@@ -162,12 +166,15 @@
         A pointer to the new image or NULL if an error occurred.
 
     Example:
+      (start code)
 
-        >   gdImagePtr im;
-        >   im = gdImageCreate(64, 64);
-        >   // ... Use the image ...
-        >   gdImageDestroy(im);
+      gdImagePtr im;
+      im = gdImageCreate(64, 64);
+      // ... Use the image ...
+      gdImageDestroy(im);
 
+      (end code)
+
     See Also:
 
         <gdImageCreateTrueColor>        
@@ -178,6 +185,10 @@
 	int i;
 	gdImagePtr im;
 
+	if (overflow2(sx, sy)) {
+		return NULL;
+	}
+
 	if (overflow2(sizeof (unsigned char *), sy)) {
 		return NULL;
 	}
@@ -263,12 +274,15 @@
         A pointer to the new image or NULL if an error occurred.
 
     Example:
+      (start code)
 
-        > gdImagePtr im;
-        > im = gdImageCreateTrueColor(64, 64);
-        > // ... Use the image ...
-        > gdImageDestroy(im);
+      gdImagePtr im;
+      im = gdImageCreateTrueColor(64, 64);
+      // ... Use the image ...
+      gdImageDestroy(im);
 
+      (end code)
+
     See Also:
 
         <gdImageCreateTrueColor>        
@@ -362,13 +376,16 @@
     Nothing.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > im = gdImageCreate(10, 10);
-    > // ... Use the image ...
-    > // Now destroy it
-    > gdImageDestroy(im);
+    gdImagePtr im;
+    im = gdImageCreate(10, 10);
+    // ... Use the image ...
+    // Now destroy it
+    gdImageDestroy(im);
 
+	(end code)
+
 */
 
 BGD_DECLARE(void) gdImageDestroy (gdImagePtr im)
@@ -395,17 +412,55 @@
 	gdFree (im);
 }
 
-/*
-	Function: gdImageColorClosest
-*/
+/**
+ * Group: Color
+ */
+
+/**
+ * Function: gdImageColorClosest
+ * 
+ * Gets the closest color of the image
+ *
+ * This is a simplified variant of <gdImageColorClosestAlpha> where the alpha
+ * channel is always opaque.
+ *
+ * Parameters:
+ *   im - The image.
+ *   r  - The value of the red component.
+ *   g  - The value of the green component.
+ *   b  - The value of the blue component.
+ *
+ * Returns:
+ *   The closest color already available in the palette for palette images;
+ *   the color value of the given components for truecolor images.
+ *
+ * See also:
+ *   - <gdImageColorExact>
+ */
 BGD_DECLARE(int) gdImageColorClosest (gdImagePtr im, int r, int g, int b)
 {
 	return gdImageColorClosestAlpha (im, r, g, b, gdAlphaOpaque);
 }
 
-/*
-	Function: gdImageColorClosestAlpha
-*/
+/**
+ * Function: gdImageColorClosestAlpha
+ *
+ * Gets the closest color of the image
+ *
+ * Parameters:
+ *   im - The image.
+ *   r  - The value of the red component.
+ *   g  - The value of the green component.
+ *   b  - The value of the blue component.
+ *   a  - The value of the alpha component.
+ *
+ * Returns:
+ *   The closest color already available in the palette for palette images;
+ *   the color value of the given components for truecolor images.
+ *
+ * See also:
+ *   - <gdImageColorExactAlpha>
+ */
 BGD_DECLARE(int) gdImageColorClosestAlpha (gdImagePtr im, int r, int g, int b, int a)
 {
 	int i;
@@ -601,17 +656,54 @@
 	return ct;
 }
 
-/*
-	Function: gdImageColorExact
-*/
+/**
+ * Function: gdImageColorExact
+ *
+ * Gets the exact color of the image
+ *
+ * This is a simplified variant of <gdImageColorExactAlpha> where the alpha
+ * channel is always opaque.
+ *
+ * Parameters:
+ *   im - The image.
+ *   r  - The value of the red component.
+ *   g  - The value of the green component.
+ *   b  - The value of the blue component.
+ *
+ * Returns:
+ *   The exact color already available in the palette for palette images; if
+ *   there is no exact color, -1 is returned.
+ *   For truecolor images the color value of the given components is returned.
+ *
+ * See also:
+ *   - <gdImageColorClosest>
+ */
 BGD_DECLARE(int) gdImageColorExact (gdImagePtr im, int r, int g, int b)
 {
 	return gdImageColorExactAlpha (im, r, g, b, gdAlphaOpaque);
 }
 
-/*
-	Function: gdImageColorExactAlpha
-*/
+/**
+ * Function: gdImageColorExactAlpha
+ *
+ * Gets the exact color of the image
+ *
+ * Parameters:
+ *   im - The image.
+ *   r  - The value of the red component.
+ *   g  - The value of the green component.
+ *   b  - The value of the blue component.
+ *   a  - The value of the alpha component.
+ *
+ * Returns:
+ *   The exact color already available in the palette for palette images; if
+ *   there is no exact color, -1 is returned.
+ *   For truecolor images the color value of the given components is returned.
+ *
+ * See also:
+ *   - <gdImageColorClosestAlpha>
+ *   - <gdTrueColorAlpha>
+ */
 BGD_DECLARE(int) gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int a)
 {
 	int i;
@@ -630,17 +722,51 @@
 	return -1;
 }
 
-/*
-	Function: gdImageColorAllocate
-*/
+/**
+ * Function: gdImageColorAllocate
+ *
+ * Allocates a color
+ *
+ * This is a simplified variant of <gdImageColorAllocateAlpha> where the alpha
+ * channel is always opaque.
+ *
+ * Parameters:
+ *   im - The image.
+ *   r  - The value of the red component.
+ *   g  - The value of the green component.
+ *   b  - The value of the blue component.
+ *
+ * Returns:
+ *   The color value.
+ *
+ * See also:
+ *   - <gdImageColorDeallocate>
+ */
 BGD_DECLARE(int) gdImageColorAllocate (gdImagePtr im, int r, int g, int b)
 {
 	return gdImageColorAllocateAlpha (im, r, g, b, gdAlphaOpaque);
 }
 
-/*
-	Function: gdImageColorAllocateAlpha
-*/
+/**
+ * Function: gdImageColorAllocateAlpha
+ *
+ * Allocates a color
+ *
+ * This is typically used for palette images, but can be used for truecolor
+ * images as well.
+ *
+ * Parameters:
+ *   im - The image.
+ *   r  - The value of the red component.
+ *   g  - The value of the green component.
+ *   b  - The value of the blue component.
+ *
+ * Returns:
+ *   The color value.
+ *
+ * See also:
+ *   - <gdImageColorDeallocate>
+ */
 BGD_DECLARE(int) gdImageColorAllocateAlpha (gdImagePtr im, int r, int g, int b, int a)
 {
 	int i;
@@ -673,9 +799,11 @@
 	Function: gdImageColorResolve
 
 	gdImageColorResolve is an alternative for the code fragment
-	| if ((color=gdImageColorExact(im,R,G,B)) < 0)
-	|   if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
-	|     color=gdImageColorClosest(im,R,G,B);
+	(start code)
+	if ((color=gdImageColorExact(im,R,G,B)) < 0)
+	  if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
+	    color=gdImageColorClosest(im,R,G,B);
+	(end code)
 	in a single function.    Its advantage is that it is guaranteed to
 	return a color index in one search over the color table.
 */
@@ -739,9 +867,21 @@
 	return op;			/* Return newly allocated color */
 }
 
-/*
-	Function: gdImageColorDeallocate
-*/
+/**
+ * Function: gdImageColorDeallocate
+ *
+ * Removes a palette entry
+ *
+ * This is a no-op for truecolor images.
+ *
+ * Parameters:
+ *   im    - The image.
+ *   color - The palette index.
+ *
+ * See also:
+ *   - <gdImageColorAllocate>
+ *   - <gdImageColorAllocateAlpha>
+ */
 BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color)
 {
 	if (im->trueColor || (color >= gdMaxColors) || (color < 0)) {
@@ -751,9 +891,18 @@
 	im->open[color] = 1;
 }
 
-/*
-	Function: gdImageColorTransparent
-*/
+/**
+ * Function: gdImageColorTransparent
+ *
+ * Sets the transparent color of the image
+ *
+ * Parameter:
+ *   im    - The image.
+ *   color - The color.
+ *
+ * See also:
+ *   - <gdImageGetTransparent>
+ */
 BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color)
 {
 	if (color < 0) {
@@ -1084,6 +1233,10 @@
 
 /* end of line clipping code */
 
+/**
+ * Group: Pixels
+ */
+
 /*
 	Function: gdImageSetPixel
 */
@@ -1278,9 +1431,21 @@
 	}
 }
 
-/*
-	Function: gdImageGetPixel
-*/
+/**
+ * Function: gdImageGetPixel
+ *
+ * Gets a pixel color as stored in the image.
+ *
+ * Parameters:
+ *   im - The image.
+ *   x  - The x-coordinate.
+ *   y  - The y-coordinate.
+ *
+ * See also:
+ *   - <gdImageGetTrueColorPixel>
+ *   - <gdImagePalettePixel>
+ *   - <gdImageTrueColorPixel>
+ */
 BGD_DECLARE(int) gdImageGetPixel (gdImagePtr im, int x, int y)
 {
 	if (gdImageBoundsSafeMacro (im, x, y)) {
@@ -1294,9 +1459,20 @@
 	}
 }
 
-/*
-	Function: gdImageGetTrueColorPixel
-*/
+/**
+ * Function: gdImageGetTrueColorPixel
+ *
+ * Gets a pixel color always as truecolor value.
+ *
+ * Parameters:
+ *   im - The image.
+ *   x  - The x-coordinate.
+ *   y  - The y-coordinate.
+ *
+ * See also:
+ *   - <gdImageGetPixel>
+ *   - <gdImageTrueColorPixel>
+ */
 BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y)
 {
 	int p = gdImageGetPixel (im, x, y);
@@ -1309,6 +1485,10 @@
 	}
 }
 
+/**
+ * Group: Primitives
+ */
+
 /*
 	Function: gdImageAABlend
 	
@@ -1686,9 +1866,25 @@
 	return gdImageBoundsSafeMacro (im, x, y);
 }
 
-/*
-	Function: gdImageChar
-*/
+/**
+ * Function: gdImageChar
+ *
+ * Draws a single character.
+ *
+ * Parameters:
+ *  im    - The image to draw onto.
+ *  f     - The raster font.
+ *  x     - The x coordinate of the upper left pixel.
+ *  y     - The y coordinate of the upper left pixel.
+ *  c     - The character.
+ *  color - The color.
+ *
+ * Variants:
+ *  - <gdImageCharUp>
+ *
+ * See also:
+ *  - <gdFontPtr>
+ */
 BGD_DECLARE(void) gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
 {
 	int cx, cy;
@@ -1715,9 +1911,9 @@
 	}
 }
 
-/*
-	Function: gdImageCharUp
-*/
+/**
+ * Function: gdImageCharUp
+ */
 BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
 {
 	int cx, cy;
@@ -1744,9 +1940,28 @@
 	}
 }
 
-/*
-	Function: gdImageString
-*/
+/**
+ * Function: gdImageString
+ * 
+ * Draws a character string.
+ *
+ * Parameters:
+ *  im    - The image to draw onto.
+ *  f     - The raster font.
+ *  x     - The x coordinate of the upper left pixel.
+ *  y     - The y coordinate of the upper left pixel.
+ *  c     - The character string.
+ *  color - The color.
+ *
+ * Variants:
+ *  - <gdImageStringUp>
+ *  - <gdImageString16>
+ *  - <gdImageStringUp16>
+ *
+ * See also:
+ *  - <gdFontPtr>
+ *  - <gdImageStringTTF>
+ */
 BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f,
 								 int x, int y, unsigned char *s, int color)
 {
@@ -1759,9 +1974,9 @@
 	}
 }
 
-/*
-	Function: gdImageStringUp
-*/
+/**
+ * Function: gdImageStringUp
+ */
 BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f,
 								   int x, int y, unsigned char *s, int color)
 {
@@ -1776,9 +1991,9 @@
 
 static int strlen16 (unsigned short *s);
 
-/*
-	Function: gdImageString16
-*/
+/**
+ * Function: gdImageString16
+ */
 BGD_DECLARE(void) gdImageString16 (gdImagePtr im, gdFontPtr f,
 								   int x, int y, unsigned short *s, int color)
 {
@@ -1791,9 +2006,9 @@
 	}
 }
 
-/*
-	Function: gdImageStringUp16
-*/
+/**
+ * Function: gdImageStringUp16
+ */
 BGD_DECLARE(void) gdImageStringUp16 (gdImagePtr im, gdFontPtr f,
 									 int x, int y, unsigned short *s, int color)
 {
@@ -2394,9 +2609,26 @@
 	gdFree(stack);
 }
 
-/*
-	Function: gdImageRectangle
-*/
+/**
+ * Function: gdImageRectangle
+ *
+ * Draws a rectangle.
+ *
+ * Parameters:
+ *   im    - The image.
+ *   x1    - The x-coordinate of the upper left corner.
+ *   y1    - The y-coordinate of the upper left corner.
+ *   x2    - The x-coordinate of the lower right corner.
+ *   y2    - The y-coordinate of the lower right corner.
+ *   color - The color.
+ *
+ * Note that x1,y1 and x2,y2 may be swapped, i.e. the former may designate the
+ * lower right corner and the latter the upper left corner. The behavior for
+ * specifying other corners is undefined.
+ *
+ * See also:
+ *   - <gdImageFilledRectangle>
+ */
 BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 {
 	int thick = im->thick;
@@ -2406,16 +2638,6 @@
 		return;
 	}
 
-	if (x1 == x2 && y1 == y2) {
-		gdImageSetPixel(im, x1, y1, color);
-		return;
-	}
-
-	if (x1 == x2 || y1 == y2) {
-		gdImageLine(im, x1, y1, x2, y2, color);
-		return;
-	}
-
 	if (y2 < y1) {
 		int t;
 		t = y1;
@@ -2470,10 +2692,14 @@
 
 		return;
 	} else {
-		gdImageLine(im, x1, y1, x2, y1, color);
-		gdImageLine(im, x1, y2, x2, y2, color);
-		gdImageLine(im, x1, y1 + 1, x1, y2 - 1, color);
-		gdImageLine(im, x2, y1 + 1, x2, y2 - 1, color);
+		if (x1 == x2 || y1 == y2) {
+			gdImageLine(im, x1, y1, x2, y2, color);
+		} else {
+			gdImageLine(im, x1, y1, x2, y1, color);
+			gdImageLine(im, x1, y2, x2, y2, color);
+			gdImageLine(im, x1, y1 + 1, x1, y2 - 1, color);
+			gdImageLine(im, x2, y1 + 1, x2, y2 - 1, color);
+		}
 	}
 }
 
@@ -2576,9 +2802,23 @@
 	_gdImageFilledVRectangle(im, x1, y1, x2, y2, color);
 }
 
-/*
-	Function: gdImageClone
-*/
+/**
+ * Group: Cloning and Copying
+ */
+
+/**
+ * Function: gdImageClone
+ *
+ * Clones an image
+ *
+ * Creates an exact duplicate of the given image.
+ *
+ * Parameters:
+ *   src - The source image.
+ *
+ * Returns:
+ *   The cloned image on success, NULL on failure.
+ */
 BGD_DECLARE(gdImagePtr) gdImageClone (gdImagePtr src) {
 	gdImagePtr dst;
 	register int i, x;
@@ -2637,7 +2877,7 @@
 	dst->cy2 = src->cy2;
 
 	dst->res_x = src->res_x;
-	dst->res_y = src->res_x;
+	dst->res_y = src->res_y;
 
 	dst->paletteQuantizationMethod     = src->paletteQuantizationMethod;
 	dst->paletteQuantizationSpeed      = src->paletteQuantizationSpeed;
@@ -2674,9 +2914,25 @@
 	return dst;
 }
 
-/*
-	Function: gdImageCopy
-*/
+/**
+ * Function: gdImageCopy
+ *
+ * Copy an area of an image to another image
+ *
+ * Parameters:
+ *   dst  - The destination image.
+ *   src  - The source image.
+ *   dstX - The x-coordinate of the upper left corner to copy to.
+ *   dstY - The y-coordinate of the upper left corner to copy to.
+ *   srcX - The x-coordinate of the upper left corner to copy from.
+ *   srcY - The y-coordinate of the upper left corner to copy from.
+ *   w    - The width of the area to copy.
+ *   h    - The height of the area to copy.
+ *
+ * See also:
+ *   - <gdImageCopyMerge>
+ *   - <gdImageCopyMergeGray>
+ */
 BGD_DECLARE(void) gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX,
 							   int srcY, int w, int h)
 {
@@ -2764,12 +3020,32 @@
 	}
 }
 
-/*
-	Function: gdImageCopyMerge
-
-	This function is a substitute for real alpha channel operations,
-	so it doesn't pay attention to the alpha channel.
-*/
+/**
+ * Function: gdImageCopyMerge
+ *
+ * Copy an area of an image to another image ignoring alpha
+ *
+ * The source area will be copied to the destination are by merging the pixels.
+ *
+ * Note:
+ *   This function is a substitute for real alpha channel operations,
+ *   so it doesn't pay attention to the alpha channel.
+ *
+ * Parameters:
+ *   dst  - The destination image.
+ *   src  - The source image.
+ *   dstX - The x-coordinate of the upper left corner to copy to.
+ *   dstY - The y-coordinate of the upper left corner to copy to.
+ *   srcX - The x-coordinate of the upper left corner to copy from.
+ *   srcY - The y-coordinate of the upper left corner to copy from.
+ *   w    - The width of the area to copy.
+ *   h    - The height of the area to copy.
+ *   pct  - The percentage in range 0..100.
+ *
+ * See also:
+ *   - <gdImageCopy>
+ *   - <gdImageCopyMergeGray>
+ */
 BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
 									int srcX, int srcY, int w, int h, int pct)
 {
@@ -2812,12 +3088,33 @@
 	}
 }
 
-/*
-	Function: gdImageCopyMergeGray
-
-	This function is a substitute for real alpha channel operations,
-	so it doesn't pay attention to the alpha channel.
-*/
+/**
+ * Function: gdImageCopyMergeGray
+ *
+ * Copy an area of an image to another image ignoring alpha
+ *
+ * The source area will be copied to the grayscaled destination area by merging
+ * the pixels.
+ *
+ * Note:
+ *   This function is a substitute for real alpha channel operations,
+ *   so it doesn't pay attention to the alpha channel.
+ * 
+ * Parameters:
+ *   dst  - The destination image.
+ *   src  - The source image.
+ *   dstX - The x-coordinate of the upper left corner to copy to.
+ *   dstY - The y-coordinate of the upper left corner to copy to.
+ *   srcX - The x-coordinate of the upper left corner to copy from.
+ *   srcY - The y-coordinate of the upper left corner to copy from.
+ *   w    - The width of the area to copy.
+ *   h    - The height of the area to copy.
+ *   pct  - The percentage of the source color intensity in range 0..100.
+ *
+ * See also:
+ *   - <gdImageCopy>
+ *   - <gdImageCopyMerge>
+ */
 BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
 										int srcX, int srcY, int w, int h, int pct)
 {
@@ -2876,9 +3173,30 @@
 	}
 }
 
-/*
-	Function: gdImageCopyResized
-*/
+/**
+ * Function: gdImageCopyResized
+ *
+ * Copy a resized area from an image to another image
+ *
+ * If the source and destination area differ in size, the area will be resized
+ * using nearest-neighbor interpolation.
+ * 
+ * Parameters:
+ *   dst  - The destination image.
+ *   src  - The source image.
+ *   dstX - The x-coordinate of the upper left corner to copy to.
+ *   dstY - The y-coordinate of the upper left corner to copy to.
+ *   srcX - The x-coordinate of the upper left corner to copy from.
+ *   srcY - The y-coordinate of the upper left corner to copy from.
+ *   dstW - The width of the area to copy to.
+ *   dstH - The height of the area to copy to.
+ *   srcW - The width of the area to copy from.
+ *   srcH - The height of the area to copy from.
+ *
+ * See also:
+ *   - <gdImageCopyResampled>
+ *   - <gdImageScale>
+ */
 BGD_DECLARE(void) gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
 									  int srcX, int srcY, int dstW, int dstH, int srcW,
 									  int srcH)
@@ -3007,17 +3325,27 @@
 	gdFree (sty);
 }
 
-/* gd 2.0.8: gdImageCopyRotated is added. Source
-	is a rectangle, with its upper left corner at
-	srcX and srcY. Destination is the *center* of
-		the rotated copy. Angle is in degrees, same as
-		gdImageArc. Floating point destination center
-	coordinates allow accurate rotation of
-	objects of odd-numbered width or height. */
-
-/*
-	Function: gdImageCopyRotated
-*/
+/**
+ * Function: gdImageCopyRotated
+ *
+ * Copy a rotated area from an image to another image
+ *
+ * The area is counter-clockwise rotated using nearest-neighbor interpolation.
+ *
+ * Parameters:
+ *   dst   - The destination image.
+ *   src   - The source image.
+ *   dstX  - The x-coordinate of the center of the area to copy to.
+ *   dstY  - The y-coordinate of the center of the area to copy to.
+ *   srcX  - The x-coordinate of the upper left corner to copy from.
+ *   srcY  - The y-coordinate of the upper left corner to copy from.
+ *   srcW  - The width of the area to copy from.
+ *   srcH  - The height of the area to copy from.
+ *   angle - The angle in degrees.
+ *
+ * See also:
+ *   - <gdImageRotateInterpolated>
+ */
 BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
 									  gdImagePtr src,
 									  double dstX, double dstY,
@@ -3101,9 +3429,31 @@
 #define floor2(exp) ((long) exp)
 /*#define floor2(exp) floor(exp)*/
 
-/*
-	Function: gdImageCopyResampled
-*/
+/**
+ * Function: gdImageCopyResampled
+ *
+ * Copy a resampled area from an image to another image
+ *
+ * If the source and destination area differ in size, the area will be resized
+ * using bilinear interpolation for truecolor images, and nearest-neighbor
+ * interpolation for palette images.
+ * 
+ * Parameters:
+ *   dst  - The destination image.
+ *   src  - The source image.
+ *   dstX - The x-coordinate of the upper left corner to copy to.
+ *   dstY - The y-coordinate of the upper left corner to copy to.
+ *   srcX - The x-coordinate of the upper left corner to copy from.
+ *   srcY - The y-coordinate of the upper left corner to copy from.
+ *   dstW - The width of the area to copy to.
+ *   dstH - The height of the area to copy to.
+ *   srcW - The width of the area to copy from.
+ *   srcH - The height of the area to copy from.
+ *
+ * See also:
+ *   - <gdImageCopyResized>
+ *   - <gdImageScale>
+ */
 BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst,
 										gdImagePtr src,
 										int dstX, int dstY,
@@ -3206,9 +3556,25 @@
 	}
 }
 
-/*
-	Function: gdImagePolygon
-*/
+/**
+ * Group: Polygons
+ */
+
+/**
+ * Function: gdImagePolygon
+ *
+ * Draws a closed polygon
+ *
+ * Parameters:
+ *   im - The image.
+ *   p  - The vertices as array of <gdPoint>s.
+ *   n  - The number of vertices.
+ *   c  - The color.
+ *
+ * See also:
+ *   - <gdImageOpenPolygon>
+ *   - <gdImageFilledPolygon>
+ */
 BGD_DECLARE(void) gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c)
 {
 	if (n <= 0) {
@@ -3220,9 +3586,20 @@
 	gdImageOpenPolygon (im, p, n, c);
 }
 
-/*
-	Function: gdImageOpenPolygon
-*/
+/**
+ * Function: gdImageOpenPolygon
+ *
+ * Draws an open polygon
+ *
+ * Parameters:
+ *   im - The image.
+ *   p  - The vertices as array of <gdPoint>s.
+ *   n  - The number of vertices.
+ *   c  - The color
+ *
+ * See also:
+ *   - <gdImagePolygon>
+ */
 BGD_DECLARE(void) gdImageOpenPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
 {
 	int i;
@@ -3250,9 +3627,24 @@
 /* That could help to adjust intersections  to produce a nice */
 /* interior_extrema. */
 
-/*
-	Function: gdImageFilledPolygon
-*/
+/**
+ * Function: gdImageFilledPolygon
+ *
+ * Draws a filled polygon
+ *
+ * The polygon is filled using the even-odd fillrule what can leave unfilled
+ * regions inside of self-intersecting polygons. This behavior might change in
+ * a future version.
+ *
+ * Parameters:
+ *   im - The image.
+ *   p  - The vertices as array of <gdPoint>s.
+ *   n  - The number of vertices.
+ *   c  - The color
+ *
+ * See also:
+ *   - <gdImagePolygon>
+ */
 BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
 {
 	int i;
@@ -3394,11 +3786,22 @@
 	}
 }
 
+/**
+ * Group: other
+ */
+
 static void gdImageSetAAPixelColor(gdImagePtr im, int x, int y, int color, int t);
 
-/*
-	Function: gdImageSetStyle
-*/
+/**
+ * Function: gdImageSetStyle
+ *
+ * Sets the style for following drawing operations
+ *
+ * Parameters:
+ *   im        - The image.
+ *   style     - An array of color values.
+ *   noOfPixel - The number of color values.
+ */
 BGD_DECLARE(void) gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels)
 {
 	if (im->style) {
@@ -3416,17 +3819,29 @@
 	im->stylePos = 0;
 }
 
-/*
-	Function: gdImageSetThickness
-*/
+/**
+ * Function: gdImageSetThickness
+ *
+ * Sets the thickness for following drawing operations
+ *
+ * Parameters:
+ *   im        - The image.
+ *   thickness - The thickness in pixels.
+ */
 BGD_DECLARE(void) gdImageSetThickness (gdImagePtr im, int thickness)
 {
 	im->thick = thickness;
 }
 
-/*
-	Function: gdImageSetBrush
-*/
+/**
+ * Function: gdImageSetBrush
+ *
+ * Sets the brush for following drawing operations
+ *
+ * Parameters:
+ *   im    - The image.
+ *   brush - The brush image.
+ */
 BGD_DECLARE(void) gdImageSetBrush (gdImagePtr im, gdImagePtr brush)
 {
 	int i;
@@ -3464,9 +3879,26 @@
 	}
 }
 
-/*
-	Function: gdImageSetAntiAliased
-*/
+/**
+ * Function: gdImageSetAntiAliased
+ *
+ * Set the color for subsequent anti-aliased drawing
+ *
+ * If <gdAntiAliased> is passed as color to drawing operations that support
+ * anti-aliased drawing (such as <gdImageLine> and <gdImagePolygon>), the actual
+ * color to be used can be set with this function.
+ *
+ * Example: draw an anti-aliased blue line:
+ * | gdImageSetAntiAliased(im, gdTrueColorAlpha(0, 0, gdBlueMax, gdAlphaOpaque));
+ * | gdImageLine(im, 10,10, 20,20, gdAntiAliased);
+ *
+ * Parameters:
+ *   im - The image.
+ *   c  - The color.
+ *
+ * See also:
+ *   - <gdImageSetAntiAliasedDontBlend>
+ */
 BGD_DECLARE(void) gdImageSetAntiAliased (gdImagePtr im, int c)
 {
 	im->AA = 1;
@@ -3474,9 +3906,20 @@
 	im->AA_dont_blend = -1;
 }
 
-/*
-	Function: gdImageSetAntiAliasedDontBlend
-*/
+/**
+ * Function: gdImageSetAntiAliasedDontBlend
+ *
+ * Set the color and "dont_blend" color for subsequent anti-aliased drawing
+ *
+ * This extended variant of <gdImageSetAntiAliased> allows to also specify a
+ * (background) color that will not be blended in anti-aliased drawing
+ * operations.
+ *
+ * Parameters:
+ *   im         - The image.
+ *   c          - The color.
+ *   dont_blend - Whether to blend.
+ */
 BGD_DECLARE(void) gdImageSetAntiAliasedDontBlend (gdImagePtr im, int c, int dont_blend)
 {
 	im->AA = 1;
@@ -3484,8 +3927,20 @@
 	im->AA_dont_blend = dont_blend;
 }
 
-/*
-	Function: gdImageInterlace
+/**
+ * Function: gdImageInterlace
+ *
+ * Sets whether an image is interlaced
+ *
+ * This is relevant only when saving the image in a format that supports
+ * interlacing.
+ *
+ * Parameters:
+ *   im           - The image.
+ *   interlaceArg - Whether the image is interlaced.
+ *
+ * See also:
+ *   - <gdImageGetInterlaced>
 */
 BGD_DECLARE(void) gdImageInterlace (gdImagePtr im, int interlaceArg)
 {
@@ -3492,9 +3947,19 @@
 	im->interlace = interlaceArg;
 }
 
-/*
-	Function: gdImageCompare
-*/
+/**
+ * Function: gdImageCompare
+ *
+ * Compare two images
+ *
+ * Parameters:
+ *   im1 - An image.
+ *   im2 - Another image.
+ *
+ * Returns:
+ *   A bitmask of <Image Comparison> flags where each set flag signals
+ *   which attributes of the images are different.
+ */
 BGD_DECLARE(int) gdImageCompare (gdImagePtr im1, gdImagePtr im2)
 {
 	int x, y;
@@ -3577,9 +4042,20 @@
 	of gdAlphaBlend(), which merges alpha in the
 	destination color much better. */
 
-/*
-	Function: gdAlphaBlend
-*/
+/**
+ * Function: gdAlphaBlend
+ *
+ * Blend two colors
+ *
+ * Parameters:
+ *   dst - The color to blend onto.
+ *   src - The color to blend.
+ *
+ * See also:
+ *   - <gdImageAlphaBlending>
+ *   - <gdLayerOverlay>
+ *   - <gdLayerMultiply>
+ */
 BGD_DECLARE(int) gdAlphaBlend (int dst, int src)
 {
 	int src_alpha = gdTrueColorGetAlpha(src);
@@ -3627,9 +4103,20 @@
 
 static int gdAlphaOverlayColor (int src, int dst, int max );
 
-/*
-	Function: gdLayerOverlay
-*/
+/**
+ * Function: gdLayerOverlay
+ *
+ * Overlay two colors
+ *
+ * Parameters:
+ *   dst - The color to overlay onto.
+ *   src - The color to overlay.
+ *
+ * See also:
+ *   - <gdImageAlphaBlending>
+ *   - <gdAlphaBlend>
+ *   - <gdLayerMultiply>
+ */
 BGD_DECLARE(int) gdLayerOverlay (int dst, int src)
 {
 	int a1, a2;
@@ -3655,11 +4142,20 @@
 	}
 }
 
-/*
-	Function: gdLayerMultiply
-
-	Apply 'multiply' effect.
-*/
+/**
+ * Function: gdLayerMultiply
+ *
+ * Overlay two colors with multiply effect
+ *
+ * Parameters:
+ *   dst - The color to overlay onto.
+ *   src - The color to overlay.
+ *
+ * See also:
+ *   - <gdImageAlphaBlending>
+ *   - <gdAlphaBlend>
+ *   - <gdLayerOverlay>
+ */
 BGD_DECLARE(int) gdLayerMultiply (int dst, int src)
 {
 	int a1, a2, r1, r2, g1, g2, b1, b2;
@@ -3682,25 +4178,57 @@
 		);
 }
 
-/*
-	Function: gdImageAlphaBlending
-*/
+/**
+ *	Function: gdImageAlphaBlending
+ *
+ *	Set the effect for subsequent drawing operations
+ *
+ *	Note that the effect is used for truecolor images only.
+ *
+ * Parameters:
+ *   im               - The image.
+ *   alphaBlendingArg - The effect.
+ *
+ * See also:
+ *   - <Effects>
+ */
 BGD_DECLARE(void) gdImageAlphaBlending (gdImagePtr im, int alphaBlendingArg)
 {
 	im->alphaBlendingFlag = alphaBlendingArg;
 }
 
-/*
-	Function: gdImageSaveAlpha
-*/
+/**
+ * Function: gdImageSaveAlpha
+ *
+ * Sets the save alpha flag
+ *
+ * The save alpha flag specifies whether the alpha channel of the pixels should
+ * be saved. This is supported only for image formats that support full alpha
+ * transparency, e.g. PNG.
+ */
 BGD_DECLARE(void) gdImageSaveAlpha (gdImagePtr im, int saveAlphaArg)
 {
 	im->saveAlphaFlag = saveAlphaArg;
 }
 
-/*
-	Function: gdImageSetClip
-*/
+/**
+ * Function: gdImageSetClip
+ *
+ * Sets the clipping rectangle
+ *
+ * The clipping rectangle restricts the drawing area for following drawing
+ * operations.
+ *
+ * Parameters:
+ *   im - The image.
+ *   x1 - The x-coordinate of the upper left corner.
+ *   y1 - The y-coordinate of the upper left corner.
+ *   x2 - The x-coordinate of the lower right corner.
+ *   y2 - The y-coordinate of the lower right corner.
+ *
+ * See also:
+ *   - <gdImageGetClip>
+ */
 BGD_DECLARE(void) gdImageSetClip (gdImagePtr im, int x1, int y1, int x2, int y2)
 {
 	if (x1 < 0) {
@@ -3733,9 +4261,21 @@
 	im->cy2 = y2;
 }
 
-/*
-	Function: gdImageGetClip
-*/
+/**
+ * Function: gdImageGetClip
+ *
+ * Gets the current clipping rectangle
+ *
+ * Parameters:
+ *   im - The image.
+ *   x1P - (out) The x-coordinate of the upper left corner.
+ *   y1P - (out) The y-coordinate of the upper left corner.
+ *   x2P - (out) The x-coordinate of the lower right corner.
+ *   y2P - (out) The y-coordinate of the lower right corner.
+ *
+ * See also:
+ *   - <gdImageSetClip>
+ */
 BGD_DECLARE(void) gdImageGetClip (gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P)
 {
 	*x1P = im->cx1;
@@ -3744,9 +4284,20 @@
 	*y2P = im->cy2;
 }
 
-/*
-	Function: gdImageSetResolution
-*/
+/**
+ * Function: gdImageSetResolution
+ *
+ * Sets the resolution of an image.
+ *
+ * Parameters:
+ *   im    - The image.
+ *   res_x - The horizontal resolution in DPI.
+ *   res_y - The vertical resolution in DPI.
+ *
+ * See also:
+ *   - <gdImageResolutionX>
+ *   - <gdImageResolutionY>
+ */
 BGD_DECLARE(void) gdImageSetResolution(gdImagePtr im, const unsigned int res_x, const unsigned int res_y)
 {
 	if (res_x > 0) im->res_x = res_x;
@@ -3904,11 +4455,20 @@
 }
 
 
-/*
-	Function: gdImagePaletteToTrueColor
-	
-	Convert a palette image to true color.
-*/
+/**
+ * Function: gdImagePaletteToTrueColor
+ *
+ * Convert a palette image to true color
+ *
+ * Parameters:
+ *   src - The image.
+ *
+ * Returns:
+ *   Non-zero if the conversion succeeded, zero otherwise.
+ *
+ * See also:
+ *   - <gdImageTrueColorToPalette>
+ */
 BGD_DECLARE(int) gdImagePaletteToTrueColor(gdImagePtr src)
 {
 	unsigned int y;
@@ -3961,6 +4521,12 @@
 	src->pixels = NULL;
 	src->alphaBlendingFlag = 0;
 	src->saveAlphaFlag = 1;
+
+	if (src->transparent >= 0) {
+		const unsigned char c = src->transparent;
+		src->transparent =  gdTrueColorAlpha(src->red[c], src->green[c], src->blue[c], src->alpha[c]);
+	}
+
 	return 1;
 
 clean_on_error:

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd.h
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd.h	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd.h	2017-01-18 23:13:46 UTC (rev 42987)
@@ -13,7 +13,7 @@
  * trailing comment. */
 #define GD_MAJOR_VERSION    2           /*version605b5d1778*/
 #define GD_MINOR_VERSION    2           /*version605b5d1778*/
-#define GD_RELEASE_VERSION  3           /*version605b5d1778*/
+#define GD_RELEASE_VERSION  4           /*version605b5d1778*/
 #define GD_EXTRA_VERSION    ""          /*version605b5d1778*/
 /* End parsable section. */
 
@@ -66,7 +66,7 @@
 # define BGD_STDCALL
 # define BGD_EXPORT_DATA_IMPL
 #else
-# if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY==1
+# if defined(__GNUC__) || defined(__clang__)
 #  define BGD_EXPORT_DATA_PROT __attribute__ ((visibility ("default")))
 #  define BGD_EXPORT_DATA_IMPL __attribute__ ((visibility ("hidden")))
 # else
@@ -148,10 +148,85 @@
 #define gdRedMax 255
 #define gdGreenMax 255
 #define gdBlueMax 255
+
+/**
+ * Group: Color Decomposition
+ */
+
+/**
+ * Macro: gdTrueColorGetAlpha
+ *
+ * Gets the alpha channel value
+ *
+ * Parameters:
+ *   c - The color
+ *
+ * See also:
+ *   - <gdTrueColorAlpha>
+ */
 #define gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24)
+
+/**
+ * Macro: gdTrueColorGetRed
+ *
+ * Gets the red channel value
+ *
+ * Parameters:
+ *   c - The color
+ *
+ * See also:
+ *   - <gdTrueColorAlpha>
+ */
 #define gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16)
+
+/**
+ * Macro: gdTrueColorGetGreen
+ *
+ * Gets the green channel value
+ *
+ * Parameters:
+ *   c - The color
+ *
+ * See also:
+ *   - <gdTrueColorAlpha>
+ */
 #define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8)
+
+/**
+ * Macro: gdTrueColorGetBlue
+ *
+ * Gets the blue channel value
+ *
+ * Parameters:
+ *   c - The color
+ *
+ * See also:
+ *   - <gdTrueColorAlpha>
+ */
 #define gdTrueColorGetBlue(c) ((c) & 0x0000FF)
+
+/**
+ * Group: Effects
+ *
+ * The layering effect
+ * 
+ * When pixels are drawn the new colors are "mixed" with the background
+ * depending on the effect.
+ *
+ * Note that the effect does not apply to palette images, where pixels
+ * are always replaced.
+ *
+ * Modes:
+ *   gdEffectReplace    - replace pixels
+ *   gdEffectAlphaBlend - blend pixels, see <gdAlphaBlend>
+ *   gdEffectNormal     - default mode; same as gdEffectAlphaBlend
+ *   gdEffectOverlay    - overlay pixels, see <gdLayerOverlay>
+ *   gdEffectMultiply   - overlay pixels with multiply effect, see
+ *                        <gdLayerMultiply>
+ *
+ * See also:
+ *   - <gdImageAlphaBlending>
+ */
 #define gdEffectReplace 0
 #define gdEffectAlphaBlend 1
 #define gdEffectNormal 2
@@ -174,14 +249,36 @@
 BGD_DECLARE(int) gdAlphaBlend (int dest, int src);
 BGD_DECLARE(int) gdLayerOverlay (int dest, int src);
 BGD_DECLARE(int) gdLayerMultiply (int dest, int src);
-	
+
+
+/**
+ * Group: Color Quantization
+ *
+ * Enum: gdPaletteQuantizationMethod
+ *
+ * Constants:
+ *   GD_QUANT_DEFAULT  - GD_QUANT_LIQ if libimagequant is available,
+ *                       GD_QUANT_JQUANT otherwise.
+ *   GD_QUANT_JQUANT   - libjpeg's old median cut. Fast, but only uses 16-bit
+ *                       color.
+ *   GD_QUANT_NEUQUANT - NeuQuant - approximation using Kohonen neural network.
+ *   GD_QUANT_LIQ      - A combination of algorithms used in libimagequant
+ *                       aiming for the highest quality at cost of speed.
+ *
+ * Note that GD_QUANT_JQUANT does not retain the alpha channel, and
+ * GD_QUANT_NEUQUANT does not support dithering.
+ *
+ * See also:
+ *   - <gdImageTrueColorToPaletteSetMethod>
+ */
 enum gdPaletteQuantizationMethod {
 	GD_QUANT_DEFAULT = 0,
-	GD_QUANT_JQUANT = 1,  /* libjpeg's old median cut. Fast, but only uses 16-bit color. */
-	GD_QUANT_NEUQUANT = 2, /* neuquant - approximation using kohonen neural network. */
-	GD_QUANT_LIQ = 3 /* combination of algorithms used in libimagequant/pngquant2 aiming for highest quality at cost of speed */
+	GD_QUANT_JQUANT = 1,
+	GD_QUANT_NEUQUANT = 2,
+	GD_QUANT_LIQ = 3
 };
 
+
 /**
  * Group: Transform
  *
@@ -211,8 +308,9 @@
  *  GD_LINEAR            - bilinear interpolation
  *
  * See also:
- *  <gdSetInterpolationMethod>
- **/
+ *  - <gdImageSetInterpolationMethod>
+ *  - <gdImageGetInterpolationMethod>
+ */
 typedef enum {
 	GD_DEFAULT          = 0,
 	GD_BELL,
@@ -260,6 +358,9 @@
 
    *gdImagePtr* is a pointer to *gdImage*.
 
+   See also:
+     <Accessor Macros>
+
    (Previous versions of this library encouraged directly manipulating
    the contents ofthe struct but we are attempting to move away from
    this practice so the fields are no longer documented here.  If you
@@ -401,7 +502,7 @@
   A font structure, containing the bitmaps of all characters in a
   font.  Used to declare the characteristics of a font. Text-output
   functions expect these as their second argument, following the
-  <gdImagePtr> argument.  <gdFontSmall> and <gdFontGetLarge> both
+  <gdImagePtr> argument.  <gdFontGetSmall> and <gdFontGetLarge> both
   return one.
 
   You can provide your own font data by providing such a structure and
@@ -459,17 +560,39 @@
    gdImageSetBrush(). */
 #define gdDashSize 4
 
-/* Special colors. */
+/**
+ * Group: Colors
+ *
+ * Colors are always of type int which is supposed to be at least 32 bit large.
+ *
+ * Kinds of colors:
+ *   true colors     - ARGB values where the alpha channel is stored as most
+ *                     significant, and the blue channel as least significant
+ *                     byte. Note that the alpha channel only uses the 7 least
+ *                     significant bits.
+ *                     Don't rely on the internal representation, though, and
+ *                     use <gdTrueColorAlpha> to compose a truecolor value, and
+ *                     <gdTrueColorGetAlpha>, <gdTrueColorGetRed>,
+ *                     <gdTrueColorGetGreen> and <gdTrueColorGetBlue> to access
+ *                     the respective channels.
+ *   palette indexes - The index of a color palette entry (0-255).
+ *   special colors  - As listed in the following section.
+ *
+ * Constants: Special Colors
+ *   gdStyled        - use the current style, see <gdImageSetStyle>
+ *   gdBrushed       - use the current brush, see <gdImageSetBrush>
+ *   gdStyledBrushed - use the current style and brush
+ *   gdTiled         - use the current tile, see <gdImageSetTile>
+ *   gdTransparent   - indicate transparency, what is not the same as the
+ *                     transparent color index; used for lines only
+ *   gdAntiAliased   - draw anti aliased
+ */
 
 #define gdStyled (-2)
 #define gdBrushed (-3)
 #define gdStyledBrushed (-4)
 #define gdTiled (-5)
-
-/* NOT the same as the transparent color index.
-   This is used in line styles only. */
 #define gdTransparent (-6)
-
 #define gdAntiAliased (-7)
 
 /* Functions to manipulate images. */
@@ -760,6 +883,21 @@
 }
 gdPoint, *gdPointPtr;
 
+/**
+ * Typedef: gdRect
+ *
+ * A rectangle in the coordinate space of the image
+ *
+ * Members:
+ *   x      - The x-coordinate of the upper left corner.
+ *   y      - The y-coordinate of the upper left corner.
+ *   width  - The width.
+ *   height - The height.
+ *
+ * Typedef: gdRectPtr
+ *
+ * A pointer to a <gdRect>
+ */
 typedef struct {
 	int x, y;
 	int width, height;
@@ -801,10 +939,27 @@
 			      ((g) << 8) +  \
 			      (b))
 
-/* Returns a truecolor value with an alpha channel component.
-   gdAlphaMax (127, **NOT 255**) is transparent, 0 is completely
-   opaque. */
-
+/**
+ * Group: Color Composition
+ *
+ * Macro: gdTrueColorAlpha
+ *
+ * Compose a truecolor value from its components
+ *
+ * Parameters:
+ *   r - The red channel (0-255)
+ *   g - The green channel (0-255)
+ *   b - The blue channel (0-255)
+ *   a - The alpha channel (0-127, where 127 is fully transparent, and 0 is
+ *       completely opaque).
+ *
+ * See also:
+ *   - <gdTrueColorGetAlpha>
+ *   - <gdTrueColorGetRed>
+ *   - <gdTrueColorGetGreen>
+ *   - <gdTrueColorGetBlue>
+ *   - <gdImageColorExactAlpha>
+ */
 #define gdTrueColorAlpha(r, g, b, a) (((a) << 24) + \
 				      ((r) << 16) + \
 				      ((g) << 8) +  \
@@ -948,7 +1103,8 @@
  *   gdDisposalRestoreBackground    - First allocated color of palette
  *   gdDisposalRestorePrevious      - Restore to before start of frame
  *
- * See also: <gdImageGifAnimAdd>
+ * See also:
+ *   - <gdImageGifAnimAdd>
  */
 enum {
 	gdDisposalUnknown,
@@ -977,7 +1133,7 @@
   typedef: gdSinkPtr
 
     *Note:* This interface is *obsolete* and kept only for
-    *compatibility.  Use <gdIOCtx> instead.
+    *compatibility*.  Use <gdIOCtx> instead.
 
     Represents a "sink" (destination) to which a PNG can be
     written. Programmers who do not wish to write PNGs to a file can
@@ -1141,35 +1297,196 @@
                                                    double sigma);
 
 
-/* Macros to access information about images. */
+/**
+ * Group: Accessor Macros
+ */
 
-/* Returns nonzero if the image is a truecolor image,
-   zero for a palette image. */
+/**
+ * Macro: gdImageTrueColor
+ *
+ * Whether an image is a truecolor image.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * Returns:
+ *   Non-zero if the image is a truecolor image, zero for palette images.
+ */
 #define gdImageTrueColor(im) ((im)->trueColor)
 
+/**
+ * Macro: gdImageSX
+ *
+ * Gets the width (in pixels) of an image.
+ * 
+ * Parameters:
+ *   im - The image.
+ */
 #define gdImageSX(im) ((im)->sx)
+
+/**
+ * Macro: gdImageSY
+ *
+ * Gets the height (in pixels) of an image.
+ *
+ * Parameters:
+ *   im - The image.
+ */
 #define gdImageSY(im) ((im)->sy)
+
+/**
+ * Macro: gdImageColorsTotal
+ *
+ * Gets the number of colors in the palette.
+ *
+ * This macro is only valid for palette images.
+ *
+ * Parameters:
+ *   im - The image
+ */
 #define gdImageColorsTotal(im) ((im)->colorsTotal)
+
+/**
+ * Macro: gdImageRed
+ *
+ * Gets the red component value of a given color.
+ *
+ * Parameters:
+ *   im - The image.
+ *   c  - The color.
+ */
 #define gdImageRed(im, c) ((im)->trueColor ? gdTrueColorGetRed(c) : \
 			   (im)->red[(c)])
+
+/**
+ * Macro: gdImageGreen
+ *
+ * Gets the green component value of a given color.
+ *
+ * Parameters:
+ *   im - The image.
+ *   c  - The color.
+ */
 #define gdImageGreen(im, c) ((im)->trueColor ? gdTrueColorGetGreen(c) : \
 			     (im)->green[(c)])
+
+/**
+ * Macro: gdImageBlue
+ *
+ * Gets the blue component value of a given color.
+ *
+ * Parameters:
+ *   im - The image.
+ *   c  - The color.
+ */
 #define gdImageBlue(im, c) ((im)->trueColor ? gdTrueColorGetBlue(c) : \
 			    (im)->blue[(c)])
+
+/**
+ * Macro: gdImageAlpha
+ *
+ * Gets the alpha component value of a given color.
+ *
+ * Parameters:
+ *   im - The image.
+ *   c  - The color.
+ */
 #define gdImageAlpha(im, c) ((im)->trueColor ? gdTrueColorGetAlpha(c) : \
 			     (im)->alpha[(c)])
+
+/**
+ * Macro: gdImageGetTransparent
+ *
+ * Gets the transparent color of the image.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * See also:
+ *   - <gdImageColorTransparent>
+ */
 #define gdImageGetTransparent(im) ((im)->transparent)
+
+/**
+ * Macro: gdImageGetInterlaced
+ *
+ * Whether an image is interlaced.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * Returns:
+ *   Non-zero for interlaced images, zero otherwise.
+ *
+ * See also:
+ *   - <gdImageInterlace>
+ */
 #define gdImageGetInterlaced(im) ((im)->interlace)
 
-/* These macros provide direct access to pixels in
-   palette-based and truecolor images, respectively.
-   If you use these macros, you must perform your own
-   bounds checking. Use of the macro for the correct type
-   of image is also your responsibility. */
+/**
+ * Macro: gdImagePalettePixel
+ *
+ * Gets the color of a pixel.
+ *
+ * Calling this macro is only valid for palette images.
+ * No bounds checking is done for the coordinates.
+ *
+ * Parameters:
+ *   im - The image.
+ *   x  - The x-coordinate.
+ *   y  - The y-coordinate.
+ *
+ * See also:
+ *   - <gdImageTrueColorPixel>
+ *   - <gdImageGetPixel>
+ */
 #define gdImagePalettePixel(im, x, y) (im)->pixels[(y)][(x)]
+
+/**
+ * Macro: gdImageTrueColorPixel
+ *
+ * Gets the color of a pixel.
+ *
+ * Calling this macro is only valid for truecolor images.
+ * No bounds checking is done for the coordinates.
+ *
+ * Parameters:
+ *   im - The image.
+ *   x  - The x-coordinate.
+ *   y  - The y-coordinate.
+ *
+ * See also:
+ *   - <gdImagePalettePixel>
+ *   - <gdImageGetTrueColorPixel>
+ */
 #define gdImageTrueColorPixel(im, x, y) (im)->tpixels[(y)][(x)]
 
+/**
+ * Macro: gdImageResolutionX
+ *
+ * Gets the horizontal resolution in DPI.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * See also:
+ *   - <gdImageResolutionY>
+ *   - <gdImageSetResolution>
+ */
 #define gdImageResolutionX(im) (im)->res_x
+
+/**
+ * Macro: gdImageResolutionY
+ *
+ * Gets the vertical resolution in DPI.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * See also:
+ *   - <gdImageResolutionX>
+ *   - <gdImageSetResolution>
+ */
 #define gdImageResolutionY(im) (im)->res_y
 
 /* I/O Support routines. */
@@ -1226,7 +1543,7 @@
  *  GD_CROP_SIDES - Crop using colors of the 4 corners
  *
  * See also:
- *  <gdImageAutoCrop>
+ *   - <gdImageCropAuto>
  **/
 enum gdCropMode {
 	GD_CROP_DEFAULT = 0,
@@ -1279,15 +1596,32 @@
 */
 BGD_DECLARE(int) gdTransformAffineBoundingBox(gdRectPtr src, const double affine[6], gdRectPtr bbox);
 
-#define GD_CMP_IMAGE		1	/* Actual image IS different */
-#define GD_CMP_NUM_COLORS	2	/* Number of Colours in pallette differ */
-#define GD_CMP_COLOR		4	/* Image colours differ */
-#define GD_CMP_SIZE_X		8	/* Image width differs */
-#define GD_CMP_SIZE_Y		16	/* Image heights differ */
-#define GD_CMP_TRANSPARENT	32	/* Transparent colour */
-#define GD_CMP_BACKGROUND	64	/* Background colour */
-#define GD_CMP_INTERLACE	128	/* Interlaced setting */
-#define GD_CMP_TRUECOLOR	256	/* Truecolor vs palette differs */
+/**
+ * Group: Image Comparison
+ *
+ * Constants:
+ *   GD_CMP_IMAGE       - Actual image IS different
+ *   GD_CMP_NUM_COLORS  - Number of colors in pallette differ
+ *   GD_CMP_COLOR       - Image colors differ
+ *   GD_CMP_SIZE_X      - Image width differs
+ *   GD_CMP_SIZE_Y      - Image heights differ
+ *   GD_CMP_TRANSPARENT - Transparent color differs
+ *   GD_CMP_BACKGROUND  - Background color differs
+ *   GD_CMP_INTERLACE   - Interlaced setting differs
+ *   GD_CMP_TRUECOLOR   - Truecolor vs palette differs
+ *
+ * See also:
+ *   - <gdImageCompare>
+ */
+#define GD_CMP_IMAGE		1
+#define GD_CMP_NUM_COLORS	2
+#define GD_CMP_COLOR		4
+#define GD_CMP_SIZE_X		8
+#define GD_CMP_SIZE_Y		16
+#define GD_CMP_TRANSPARENT	32
+#define GD_CMP_BACKGROUND	64
+#define GD_CMP_INTERLACE	128
+#define GD_CMP_TRUECOLOR	256
 
 /* resolution affects ttf font rendering, particularly hinting */
 #define GD_RESOLUTION           96      /* pixels per inch */

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_bmp.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_bmp.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_bmp.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -12,6 +12,13 @@
 
 	----------------------------------------------------------------------------
  */
+
+/**
+ * File: BMP IO
+ *
+ * Read and write BMP images.
+ */
+
 /* $Id$ */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -62,6 +69,18 @@
 
 /*
 	Function: gdImageBmpPtr
+
+	Outputs the given image as BMP data, but using a <gdIOCtx> instead
+	of a file. See <gdImageBmp>.
+
+	Parameters:
+		im			- the image to save.
+		size 		- Output: size in bytes of the result.
+		compression - whether to apply RLE or not.
+
+	Returns:
+
+		A pointer to memory containing the image data or NULL on error.
 */
 BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression)
 {
@@ -76,6 +95,31 @@
 
 /*
 	Function: gdImageBmp
+
+    <gdImageBmp> outputs the specified image to the specified file in
+    BMP format. The file must be open for writing. Under MSDOS and all
+    versions of Windows, it is important to use "wb" as opposed to
+    simply "w" as the mode when opening the file, and under Unix there
+    is no penalty for doing so. <gdImageBmp> does not close the file;
+    your code must do so.
+
+    In addition, <gdImageBmp> allows to specify whether RLE compression
+    should be applied.
+
+	Variants:
+
+		<gdImageBmpCtx> write via a <gdIOCtx> instead of a file handle.
+
+		<gdImageBmpPtr> store the image file to memory.
+
+	Parameters:
+
+		im			- the image to save.
+		outFile		- the output FILE* object.
+		compression - whether to apply RLE or not.
+
+	Returns:
+		nothing
 */
 BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression)
 {
@@ -87,6 +131,14 @@
 
 /*
 	Function: gdImageBmpCtx
+
+	Outputs the given image as BMP data, but using a <gdIOCtx> instead
+	of a file. See <gdImageBmp>.
+
+	Parameters:
+		im			- the image to save.
+		out 		- the <gdIOCtx> to write to.
+		compression - whether to apply RLE or not.
 */
 BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
 {
@@ -102,7 +154,7 @@
 		compression = 0;
 	}
 
-	if (compression == 1 && !out->seek) {
+	if (compression && !out->seek) {
 		/* Try to create a temp file where we can seek */
 		if ((tmpfile_for_compression = tmpfile()) == NULL) {
 			compression = 0;
@@ -350,9 +402,7 @@
 	}
 
 	if (compressed_run) {
-		if (rle_type == BMP_RLE_TYPE_RLE) {
-			compressed_length += build_rle_packet(row, rle_type, compressed_run, uncompressed_row);
-		}
+		compressed_length += build_rle_packet(row, rle_type, compressed_run, uncompressed_row);
 	}
 
 	gdFree(uncompressed_start);

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_color.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_color.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_color.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -5,6 +5,11 @@
 #include "gd.h"
 #include "gd_color.h"
 
+/**
+ * The threshold method works relatively well but it can be improved.
+ * Maybe L*a*b* and Delta-E will give better results (and a better
+ * granularity).
+ */
 int gdColorMatch(gdImagePtr im, int col1, int col2, float threshold)
 {
 	const int dr = gdImageRed(im, col1) - gdImageRed(im, col2);

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_crop.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_crop.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_crop.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,13 +1,24 @@
-/* Crop support
- * manual crop using a gdRect or automatic crop using a background
- * color (automatic detections or using either the transparent color,
- * black or white).
- * An alternative method allows to crop using a given color and a
- * threshold. It works relatively well but it can be improved.
- * Maybe L*a*b* and Delta-E will give better results (and a better
- * granularity).
+/**
+ * File: Cropping
+ *
+ * Crop an image
+ *
+ * Some functions to crop images, automatically (auto detection of the border
+ * color), using a given color (with or without tolerance) or using a given
+ * rectangle.
+ * 
+ * Example:
+ *   (start code)
+ *   im2 = gdImageAutoCrop(im, GD_CROP_SIDES);
+ *   if (im2) {
+ *       gdImageDestroy(im); // unless you need the original image subsequently
+ *       // do something with the cropped image
+ *   }
+ *   gdImageDestroy(im2);
+ *   (end code)
  */
 
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -18,14 +29,31 @@
 
 static int gdGuessBackgroundColorFromCorners(gdImagePtr im, int *color);
 
-/*
-	Function: gdImageCrop
+/**
+ * Function: gdImageCrop
+ *
+ * Crop an image to a given rectangle
+ *
+ * Parameters:
+ *   src  - The image.
+ *   crop - The cropping rectangle, see <gdRect>.
+ *
+ * Returns:
+ *   The newly created cropped image, or NULL on failure.
+ *
+ * See also:
+ *   - <gdImageCropAuto>
+ *   - <gdImageCropThreshold>
  */
 BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop)
 {
 	gdImagePtr dst;
 
-	dst = gdImageCreateTrueColor(crop->width, crop->height);
+	if (gdImageTrueColor(src)) {
+		dst = gdImageCreateTrueColor(crop->width, crop->height);
+	} else {
+		dst = gdImageCreate(crop->width, crop->height);
+	}
 	if (!dst) return NULL;
 	gdImageCopy(dst, src, 0, 0, crop->x, crop->y, crop->width, crop->height);
 
@@ -32,8 +60,23 @@
 	return dst;
 }
 
-/*
-	Function: gdImageCropAuto
+/**
+ * Function: gdImageCropAuto
+ *
+ * Crop an image automatically
+ *
+ * This function detects the cropping area according to the given _mode_.
+ *
+ * Parameters:
+ *   im   - The image.
+ *   mode - The cropping mode, see <gdCropMode>.
+ *
+ * Returns:
+ *   The newly created cropped image, or NULL on failure.
+ *
+ * See also:
+ *   - <gdImageCrop>
+ *   - <gdImageCropThreshold>
  */
 BGD_DECLARE(gdImagePtr) gdImageCropAuto(gdImagePtr im, const unsigned int mode)
 {
@@ -123,8 +166,26 @@
 	return gdImageCrop(im, &crop);
 }
 
-/*
-	Function: gdImageCropThreshold
+/**
+ * Function: gdImageCropThreshold
+ *
+ * Crop an image using a given color
+ *
+ * The _threshold_ defines the tolerance to be used while comparing the image
+ * color and the color to crop. The method used to calculate the color
+ * difference is based on the color distance in the RGB(A) cube.
+ *
+ * Parameters:
+ *   im        - The image.
+ *   color     - The crop color.
+ *   threshold - The crop threshold.
+ * 
+ * Returns:
+ *   The newly created cropped image, or NULL on failure.
+ *
+ * See also:
+ *   - <gdImageCrop>
+ *   - <gdImageCropAuto>
  */
 BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int color, const float threshold)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_filter.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_filter.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_filter.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,8 @@
+/**
+ * File: Image Filters
+ */
+
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -184,10 +189,16 @@
 	return 1;
 }
 
-/*
-	Function: gdImageNegate
-	
-	Invert src image.
+/**
+ * Function: gdImageNegate
+ *
+ * Invert an image
+ *
+ * Parameters:
+ *   src - The image.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
  */
 BGD_DECLARE(int) gdImageNegate(gdImagePtr src)
 {
@@ -220,10 +231,16 @@
 	return 1;
 }
 
-/*
-	Function: gdImageGrayScale
-	
-	Convert the image src to a grayscale image.
+/**
+ * Function: gdImageGrayScale
+ *
+ * Convert an image to grayscale
+ *
+ * Parameters:
+ *   src - The image.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
  */
 BGD_DECLARE(int) gdImageGrayScale(gdImagePtr src)
 {
@@ -257,10 +274,21 @@
 	return 1;
 }
 
-/*
-	Function: gdImageBrightness
-	
-	Set the brightness level <level> for the image src.
+/**
+ * Function: gdImageBrightness
+ *
+ * Change the brightness of an image
+ *
+ * Parameters:
+ *   src        - The image.
+ *   brightness - The value to add to the color channels of all pixels.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageContrast>
+ *   - <gdImageColor>
  */
 BGD_DECLARE(int) gdImageBrightness(gdImagePtr src, int brightness)
 {
@@ -307,8 +335,22 @@
 }
 
 
-/*
-	Function: gdImageContrast
+/**
+ * Function: gdImageContrast
+ *
+ * Change the contrast of an image
+ *
+ * Parameters:
+ *   src      - The image.
+ *   contrast - The contrast adjustment value. Negative values increase, postive
+ *              values decrease the contrast. The larger the absolute value, the
+ *              stronger the effect.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageBrightness>
  */
 BGD_DECLARE(int) gdImageContrast(gdImagePtr src, double contrast)
 {
@@ -370,8 +412,23 @@
 }
 
 
-/*
-	Function: gdImageColor
+/**
+ * Function: gdImageColor
+ *
+ * Change channel values of an image
+ *
+ * Parameters:
+ *   src   - The image.
+ *   red   - The value to add to the red channel of all pixels.
+ *   green - The value to add to the green channel of all pixels.
+ *   blue  - The value to add to the blue channel of all pixels.
+ *   alpha - The value to add to the alpha channel of all pixels.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageBrightness>
  */
 BGD_DECLARE(int) gdImageColor(gdImagePtr src, const int red, const int green, const int blue, const int alpha)
 {
@@ -415,8 +472,29 @@
 	return 1;
 }
 
-/*
-	Function: gdImageConvolution
+/**
+ * Function: gdImageConvolution
+ *
+ * Apply a convolution matrix to an image
+ *
+ * Depending on the matrix a wide range of effects can be accomplished, e.g.
+ * blurring, sharpening, embossing and edge detection.
+ *
+ * Parameters:
+ *   src        - The image.
+ *   filter     - The 3x3 convolution matrix.
+ *   filter_div - The value to divide the convoluted channel values by.
+ *   offset     - The value to add to the convoluted channel values.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageEdgeDetectQuick>
+ *   - <gdImageGaussianBlur>
+ *   - <gdImageEmboss>
+ *   - <gdImageMeanRemoval>
+ *   - <gdImageSmooth>
  */
 BGD_DECLARE(int) gdImageConvolution(gdImagePtr src, float filter[3][3], float filter_div, float offset)
 {
@@ -599,8 +677,22 @@
 	return 1;
 }
 
-/*
-	Function: gdImageEdgeDetectQuick
+/**
+ * Function: gdImageEdgeDetectQuick
+ *
+ * Edge detection of an image
+ *
+ * (see edge_detect_quick.jpg)
+ *
+ * Parameters:
+ *   src - The image.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageMeanRemoval>
+ *   - <gdImageConvolution>
  */
 BGD_DECLARE(int) gdImageEdgeDetectQuick(gdImagePtr src)
 {
@@ -642,8 +734,21 @@
 	return gdImageConvolution(im, filter, 16, 0);
 }
 
-/*
-	Function: gdImageEmboss
+/**
+ * Function: gdImageEmboss
+ *
+ * Emboss an image
+ *
+ * (see emboss.jpg)
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageConvolution>
  */
 BGD_DECLARE(int) gdImageEmboss(gdImagePtr im)
 {
@@ -659,8 +764,22 @@
 	return gdImageConvolution(im, filter, 1, 127);
 }
 
-/*
-	Function: gdImageMeanRemoval
+/**
+ * Function: gdImageMeanRemoval
+ *
+ * Mean removal of an image
+ *
+ * (see mean_removal.jpg)
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageEdgeDetectQuick>
+ *   - <gdImageConvolution>
  */
 BGD_DECLARE(int) gdImageMeanRemoval(gdImagePtr im)
 {
@@ -671,8 +790,22 @@
 	return gdImageConvolution(im, filter, 1, 0);
 }
 
-/*
-	Function: gdImageSmooth
+/**
+ * Function: gdImageSmooth
+ *
+ * Smooth an image
+ *
+ * (see smooth.jpg)
+ *
+ * Parameters:
+ *   im     - The image.
+ *   weight - The strength of the smoothing.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdImageConvolution>
  */
 BGD_DECLARE(int) gdImageSmooth(gdImagePtr im, float weight)
 {
@@ -838,15 +971,17 @@
     truecolor.
 
   Example:
+    (start code)
 
-    > FILE *in;
-    > gdImagePtr result, src;
-    > 
-    > in = fopen("foo.png", "rb");
-    > src = gdImageCreateFromPng(in);
-    >
-    > result = gdImageCopyGaussianBlurred(im, src->sx / 10, -1.0);
+    FILE *in;
+    gdImagePtr result, src;
+     
+    in = fopen("foo.png", "rb");
+    src = gdImageCreateFromPng(in);
+    
+    result = gdImageCopyGaussianBlurred(im, src->sx / 10, -1.0);
 
+    (end code)
 */
 
 /* TODO: Look into turning this into a generic seperable filter

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_gd.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_gd.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_gd.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,40 @@
+/**
+ * File: GD IO
+ *
+ * Read and write GD images.
+ *
+ * The GD image format is a proprietary image format of libgd. *It has to be*
+ * *regarded as being obsolete, and should only be used for development and*
+ * *testing purposes.*
+ *
+ * Structure of a GD image file:
+ *  - file header
+ *  - color header (either truecolor or palette)
+ *  - image data
+ *
+ * All numbers are stored in big-endian format.
+ *
+ * File header structure:
+ *  signature     - 1 word ("\xFF\xFE" for truecolor, "\xFF\xFF" for palette)
+ *  width         - 1 word
+ *  height        - 1 word
+ *
+ * Truecolor image color header:
+ *  truecolor   - 1 byte (always "\001")
+ *  transparent - 1 dword (ARGB color)
+ *
+ * Palette image color header:
+ *  truecolor   - 1 byte (always "\0")
+ *  count       - 1 word (the number of used palette colors)
+ *  transparent - 1 dword (ARGB color)
+ *  palette     - 256 dwords (RGBA colors)
+ *
+ * Image data:
+ *  Sequential pixel data; row-major from top to bottom, left to right:
+ *   - 1 byte per pixel for palette images
+ *   - 1 dword (ARGB) per pixel for truecolor images
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_gd2.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_gd2.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_gd2.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -10,6 +10,64 @@
    *
  */
 
+/**
+ * File: GD2 IO
+ *
+ * Read and write GD2 images.
+ *
+ * The GD2 image format is a proprietary image format of libgd. *It has to be*
+ * *regarded as being obsolete, and should only be used for development and*
+ * *testing purposes.*
+ *
+ * Structure of a GD2 image file:
+ *  - file header
+ *  - chunk headers (only for compressed data)
+ *  - color header (either truecolor or palette)
+ *  - chunks of image data (chunk-row-major, top to bottom, left to right)
+ *
+ * All numbers are stored in big-endian format.
+ *
+ * File header structure:
+ *  signature     - 4 bytes (always "gd2\0")
+ *  version       - 1 word (e.g. "\0\002")
+ *  width         - 1 word
+ *  height        - 1 word
+ *  chunk_size    - 1 word
+ *  format        - 1 word
+ *  x_chunk_count - 1 word
+ *  y_chunk_count - 1 word
+ *
+ * Recognized formats:
+ *  1 - raw palette image data
+ *  2 - compressed palette image data
+ *  3 - raw truecolor image data
+ *  4 - compressed truecolor image data
+ *
+ * Chunk header:
+ *  offset - 1 dword
+ *  size   - 1 dword
+ *
+ * There are x_chunk_count * y_chunk_count chunk headers. 
+ *
+ * Truecolor image color header:
+ *  truecolor   - 1 byte (always "\001")
+ *  transparent - 1 dword (ARGB color)
+ *
+ * Palette image color header:
+ *  truecolor   - 1 byte (always "\0")
+ *  count       - 1 word (the number of used palette colors)
+ *  transparent - 1 dword (ARGB color)
+ *  palette     - 256 dwords (RGBA colors)
+ *
+ * Chunk structure:
+ *  Sequential pixel data of a rectangular area (chunk_size x chunk_size),
+ *  row-major from top to bottom, left to right:
+ *  - 1 byte per pixel for palette images
+ *  - 1 dword (ARGB) per pixel for truecolor images
+ *
+ *  Depending on format, the chunk may be ZLIB compressed.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -151,6 +209,10 @@
 	GD2_DBG (printf ("%d Chunks vertically\n", *ncy));
 
 	if (gd2_compressed (*fmt)) {
+		if (*ncx <= 0 || *ncy <= 0 || *ncx > INT_MAX / *ncy) {
+			GD2_DBG(printf ("Illegal chunk counts: %d * %d\n", *ncx, *ncy));
+			goto fail1;
+		}
 		nc = (*ncx) * (*ncy);
 
 		GD2_DBG (printf ("Reading %d chunk index entries\n", nc));
@@ -445,18 +507,16 @@
 
 						if (im->trueColor) {
 							if (!gdGetInt (&im->tpixels[y][x], in)) {
-								/*printf("EOF while reading\n"); */
-								/*gdImageDestroy(im); */
-								/*return 0; */
-								im->tpixels[y][x] = 0;
+								gd_error("gd2: EOF while reading\n");
+								gdImageDestroy(im);
+								return NULL;
 							}
 						} else {
 							int ch;
 							if (!gdGetByte (&ch, in)) {
-								/*printf("EOF while reading\n"); */
-								/*gdImageDestroy(im); */
-								/*return 0; */
-								ch = 0;
+								gd_error("gd2: EOF while reading\n");
+								gdImageDestroy(im);
+								return NULL;
 							}
 							im->pixels[y][x] = ch;
 						}
@@ -867,7 +927,7 @@
 	/* Force fmt to a valid value since we don't return anything. */
 	/* */
 	if ((fmt != GD2_FMT_RAW) && (fmt != GD2_FMT_COMPRESSED)) {
-		fmt = im->trueColor ? GD2_FMT_TRUECOLOR_COMPRESSED : GD2_FMT_COMPRESSED;
+		fmt = GD2_FMT_COMPRESSED;
 	};
 	if (im->trueColor) {
 		fmt += 2;
@@ -887,8 +947,8 @@
 	};
 
 	/* Work out number of chunks. */
-	ncx = im->sx / cs + 1;
-	ncy = im->sy / cs + 1;
+	ncx = (im->sx + cs - 1) / cs;
+	ncy = (im->sy + cs - 1) / cs;
 
 	/* Write the standard header. */
 	_gd2PutHeader (im, out, cs, fmt, ncx, ncy);
@@ -1119,5 +1179,6 @@
 BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
 {
 	_noLibzError();
+	return NULL;
 }
 #endif /* HAVE_LIBZ */

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_gif_in.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_gif_in.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_gif_in.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,9 @@
+/**
+ * File: GIF Input
+ *
+ * Read GIF images.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -443,7 +449,7 @@
 	if(flag) {
 		scd->curbit = 0;
 		scd->lastbit = 0;
-		scd->last_byte = 0;
+		scd->last_byte = 2;
 		scd->done = FALSE;
 		return 0;
 	}

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_gif_out.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_gif_out.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_gif_out.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,9 @@
+/**
+ * File: GIF Output
+ *
+ * Write GIF images.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -534,50 +540,52 @@
     Nothing.
 
   Example:
+    (start code)
 
-    > {
-    > gdImagePtr im, im2, im3;
-    > int black, white, trans;
-    > FILE *out;
-    >
-    > im = gdImageCreate(100, 100);     // Create the image 
-    > white = gdImageColorAllocate(im, 255, 255, 255); // Allocate background
-    > black = gdImageColorAllocate(im, 0, 0, 0); // Allocate drawing color 
-    > trans = gdImageColorAllocate(im, 1, 1, 1); // trans clr for compression 
-    > gdImageRectangle(im, 0, 0, 10, 10, black); // Draw rectangle 
-    >
-    > out = fopen("anim.gif", "wb");// Open output file in binary mode
-    > gdImageGifAnimBegin(im, out, 1, 3);// Write GIF hdr, global clr map,loops
-    > // Write the first frame.  No local color map.  Delay = 1s 
-    > gdImageGifAnimAdd(im, out, 0, 0, 0, 100, 1, NULL);
-    >
-    > // construct the second frame 
-    > im2 = gdImageCreate(100, 100);
-    > (void)gdImageColorAllocate(im2, 255, 255, 255); // White background
-    > gdImagePaletteCopy (im2, im);  // Make sure the palette is identical
-    > gdImageRectangle(im2, 0, 0, 15, 15, black);    // Draw something 
-    > // Allow animation compression with transparent pixels 
-    > gdImageColorTransparent (im2, trans);
-    > gdImageGifAnimAdd(im2, out, 0, 0, 0, 100, 1, im);  // Add second frame 
-    >
-    > // construct the third frame 
-    > im3 = gdImageCreate(100, 100);
-    > (void)gdImageColorAllocate(im3, 255, 255, 255); // white background
-    > gdImagePaletteCopy (im3, im); // Make sure the palette is identical
-    > gdImageRectangle(im3, 0, 0, 15, 20, black); // Draw something 
-    > // Allow animation compression with transparent pixels 
-    > gdImageColorTransparent (im3, trans);
-    > // Add the third frame, compressing against the second one 
-    > gdImageGifAnimAdd(im3, out, 0, 0, 0, 100, 1, im2);
-    > gdImageGifAnimEnd(out);  // End marker, same as putc(';', out);
-    > fclose(out); // Close file 
-    >
-    > // Destroy images 
-    > gdImageDestroy(im);
-    > gdImageDestroy(im2);
-    > gdImageDestroy(im3);
-    > }
+    {
+    gdImagePtr im, im2, im3;
+    int black, white, trans;
+    FILE *out;
+    
+    im = gdImageCreate(100, 100);     // Create the image
+    white = gdImageColorAllocate(im, 255, 255, 255); // Allocate background
+    black = gdImageColorAllocate(im, 0, 0, 0); // Allocate drawing color
+    trans = gdImageColorAllocate(im, 1, 1, 1); // trans clr for compression
+    gdImageRectangle(im, 0, 0, 10, 10, black); // Draw rectangle
+    
+    out = fopen("anim.gif", "wb");// Open output file in binary mode
+    gdImageGifAnimBegin(im, out, 1, 3);// Write GIF hdr, global clr map,loops
+    // Write the first frame.  No local color map.  Delay = 1s
+    gdImageGifAnimAdd(im, out, 0, 0, 0, 100, 1, NULL);
+    
+    // construct the second frame
+    im2 = gdImageCreate(100, 100);
+    (void)gdImageColorAllocate(im2, 255, 255, 255); // White background
+    gdImagePaletteCopy (im2, im);  // Make sure the palette is identical
+    gdImageRectangle(im2, 0, 0, 15, 15, black);    // Draw something
+    // Allow animation compression with transparent pixels
+    gdImageColorTransparent (im2, trans);
+    gdImageGifAnimAdd(im2, out, 0, 0, 0, 100, 1, im);  // Add second frame
+    
+    // construct the third frame
+    im3 = gdImageCreate(100, 100);
+    (void)gdImageColorAllocate(im3, 255, 255, 255); // white background
+    gdImagePaletteCopy (im3, im); // Make sure the palette is identical
+    gdImageRectangle(im3, 0, 0, 15, 20, black); // Draw something
+    // Allow animation compression with transparent pixels
+    gdImageColorTransparent (im3, trans);
+    // Add the third frame, compressing against the second one
+    gdImageGifAnimAdd(im3, out, 0, 0, 0, 100, 1, im2);
+    gdImageGifAnimEnd(out);  // End marker, same as putc(';', out);
+    fclose(out); // Close file
+    
+    // Destroy images
+    gdImageDestroy(im);
+    gdImageDestroy(im2);
+    gdImageDestroy(im3);
+    }
 
+    (end code)
 */
 
 BGD_DECLARE(void) gdImageGifAnimAdd(gdImagePtr im, FILE *outFile, int LocalCM,

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_interpolation.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_interpolation.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_interpolation.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -829,8 +829,13 @@
 {
 	unsigned int u = 0;
 	LineContribType *res;
-	int overflow_error = 0;
+	size_t weights_size;
 
+	if (overflow2(windows_size, sizeof(double))) {
+		return NULL;
+	} else {
+		weights_size = windows_size * sizeof(double);
+	}
 	res = (LineContribType *) gdMalloc(sizeof(LineContribType));
 	if (!res) {
 		return NULL;
@@ -847,15 +852,11 @@
 		return NULL;
 	}
 	for (u = 0 ; u < line_length ; u++) {
-		if (overflow2(windows_size, sizeof(double))) {
-			overflow_error = 1;
-		} else {
-			res->ContribRow[u].Weights = (double *) gdMalloc(windows_size * sizeof(double));
-		}
-		if (overflow_error == 1 || res->ContribRow[u].Weights == NULL) {
+		res->ContribRow[u].Weights = (double *) gdMalloc(weights_size);
+		if (res->ContribRow[u].Weights == NULL) {
 			unsigned int i;
-			u--;
-			for (i=0;i<=u;i++) {
+
+			for (i=0;i<u;i++) {
 				gdFree(res->ContribRow[i].Weights);
 			}
 			gdFree(res->ContribRow);
@@ -1015,6 +1016,8 @@
 	gdImagePtr dst = NULL;
 	int scale_pass_res;
 
+	assert(src != NULL);
+
     /* First, handle the trivial case. */
     if (src_width == new_width && src_height == new_height) {
         return gdImageClone(src);
@@ -1055,7 +1058,7 @@
         scale_pass_res = _gdScalePass(tmp_im, src_height, dst, new_height, new_width, VERTICAL);
 		if (scale_pass_res != 1) {
 			gdImageDestroy(dst);
-			if (tmp_im != NULL && src != tmp_im) {
+			if (src != tmp_im) {
 				gdImageDestroy(tmp_im);
 			}
 			return NULL;
@@ -1063,7 +1066,7 @@
     }/* if */
 
 
-	if (tmp_im != NULL && src != tmp_im) {
+	if (src != tmp_im) {
         gdImageDestroy(tmp_im);
     }/* if */
 
@@ -1241,11 +1244,11 @@
 					f_b1, f_b2, f_b3, f_b4,
 					f_a1, f_a2, f_a3, f_a4;
 
-			/* zero for the background color, nothig gets outside anyway */
+			/* 0 for bgColor; (n,m) is supposed to be valid anyway */
 			pixel1 = getPixelOverflowPalette(im, n, m, 0);
-			pixel2 = getPixelOverflowPalette(im, n + 1, m, 0);
-			pixel3 = getPixelOverflowPalette(im, n, m + 1, 0);
-			pixel4 = getPixelOverflowPalette(im, n + 1, m + 1, 0);
+			pixel2 = getPixelOverflowPalette(im, n + 1, m, pixel1);
+			pixel3 = getPixelOverflowPalette(im, n, m + 1, pixel1);
+			pixel4 = getPixelOverflowPalette(im, n + 1, m + 1, pixel1);
 
 			f_r1 = gd_itofx(gdTrueColorGetRed(pixel1));
 			f_r2 = gd_itofx(gdTrueColorGetRed(pixel2));
@@ -1265,10 +1268,10 @@
 			f_a4 = gd_itofx(gdTrueColorGetAlpha(pixel4));
 
 			{
-				const char red = (char) gd_fxtoi(gd_mulfx(f_w1, f_r1) + gd_mulfx(f_w2, f_r2) + gd_mulfx(f_w3, f_r3) + gd_mulfx(f_w4, f_r4));
-				const char green = (char) gd_fxtoi(gd_mulfx(f_w1, f_g1) + gd_mulfx(f_w2, f_g2) + gd_mulfx(f_w3, f_g3) + gd_mulfx(f_w4, f_g4));
-				const char blue = (char) gd_fxtoi(gd_mulfx(f_w1, f_b1) + gd_mulfx(f_w2, f_b2) + gd_mulfx(f_w3, f_b3) + gd_mulfx(f_w4, f_b4));
-				const char alpha = (char) gd_fxtoi(gd_mulfx(f_w1, f_a1) + gd_mulfx(f_w2, f_a2) + gd_mulfx(f_w3, f_a3) + gd_mulfx(f_w4, f_a4));
+				const unsigned char red = (unsigned char) gd_fxtoi(gd_mulfx(f_w1, f_r1) + gd_mulfx(f_w2, f_r2) + gd_mulfx(f_w3, f_r3) + gd_mulfx(f_w4, f_r4));
+				const unsigned char green = (unsigned char) gd_fxtoi(gd_mulfx(f_w1, f_g1) + gd_mulfx(f_w2, f_g2) + gd_mulfx(f_w3, f_g3) + gd_mulfx(f_w4, f_g4));
+				const unsigned char blue = (unsigned char) gd_fxtoi(gd_mulfx(f_w1, f_b1) + gd_mulfx(f_w2, f_b2) + gd_mulfx(f_w3, f_b3) + gd_mulfx(f_w4, f_b4));
+				const unsigned char alpha = (unsigned char) gd_fxtoi(gd_mulfx(f_w1, f_a1) + gd_mulfx(f_w2, f_a2) + gd_mulfx(f_w3, f_a3) + gd_mulfx(f_w4, f_a4));
 
 				new_img->tpixels[dst_offset_v][dst_offset_h] = gdTrueColorAlpha(red, green, blue, alpha);
 			}
@@ -1327,11 +1330,11 @@
 					f_g1, f_g2, f_g3, f_g4,
 					f_b1, f_b2, f_b3, f_b4,
 					f_a1, f_a2, f_a3, f_a4;
-			/* 0 for bgColor, nothing gets outside anyway */
+			/* 0 for bgColor; (n,m) is supposed to be valid anyway */
 			pixel1 = getPixelOverflowTC(im, n, m, 0);
-			pixel2 = getPixelOverflowTC(im, n + 1, m, 0);
-			pixel3 = getPixelOverflowTC(im, n, m + 1, 0);
-			pixel4 = getPixelOverflowTC(im, n + 1, m + 1, 0);
+			pixel2 = getPixelOverflowTC(im, n + 1, m, pixel1);
+			pixel3 = getPixelOverflowTC(im, n, m + 1, pixel1);
+			pixel4 = getPixelOverflowTC(im, n + 1, m + 1, pixel1);
 
 			f_r1 = gd_itofx(gdTrueColorGetRed(pixel1));
 			f_r2 = gd_itofx(gdTrueColorGetRed(pixel2));
@@ -1490,13 +1493,8 @@
 				src_offset_y[8] = m;
 			}
 
-			if (m >= src_h - 1) {
-				src_offset_x[8] = n;
-				src_offset_y[8] = m;
-			} else {
-				src_offset_x[9] = n;
-				src_offset_y[9] = m;
-			}
+			src_offset_x[9] = n;
+			src_offset_y[9] = m;
 
 			if ((m >= src_h-1) || (n >= src_w-1)) {
 				src_offset_x[10] = n;
@@ -1607,9 +1605,28 @@
 	return dst;
 }
 
-/*
-	Function: gdImageScale
-*/
+/**
+ * Function: gdImageScale
+ *
+ * Scale an image
+ *
+ * Creates a new image, scaled to the requested size using the current
+ * <gdInterpolationMethod>.
+ *
+ * Note that GD_WEIGHTED4 is not yet supported by this function.
+ *
+ * Parameters:
+ *   src        - The source image.
+ *   new_width  - The new width.
+ *   new_height - The new height.
+ *
+ * Returns:
+ *   The scaled image on success, NULL on failure.
+ *
+ * See also:
+ *   - <gdImageCopyResized>
+ *   - <gdImageCopyResampled>
+ */
 BGD_DECLARE(gdImagePtr) gdImageScale(const gdImagePtr src, const unsigned int new_width, const unsigned int new_height)
 {
 	gdImagePtr im_scaled = NULL;
@@ -1689,13 +1706,6 @@
 	gdRect bbox;
 	int new_height, new_width;
 
-	/* impact perf a bit, but not that much. Implementation for palette
-	   images can be done at a later point.
-	*/
-	if (src->trueColor == 0) {
-		gdImagePaletteToTrueColor(src);
-	}
-
     gdRotatedImageSize(src, degrees, &bbox);
     new_width = bbox.width;
     new_height = bbox.height;
@@ -1753,13 +1763,6 @@
 		return NULL;
 	}
 
-	/* impact perf a bit, but not that much. Implementation for palette
-	   images can be done at a later point.
-	*/
-	if (src->trueColor == 0) {
-		gdImagePaletteToTrueColor(src);
-	}
-
 	if (src->interpolation == NULL) {
 		gdImageSetInterpolationMethod(src, GD_DEFAULT);
 	}
@@ -1796,9 +1799,26 @@
 	return dst;
 }
 
-/*
-	Function: gdImageRotateInterpolated
-*/
+/** 
+ * Function: gdImageRotateInterpolated
+ *
+ * Rotate an image
+ *
+ * Creates a new image, counter-clockwise rotated by the requested angle
+ * using the current <gdInterpolationMethod>. Non-square angles will add a
+ * border with bgcolor.
+ *
+ * Parameters:
+ *   src     - The source image.
+ *   angle   - The angle in degrees.
+ *   bgcolor - The color to fill the added background with.
+ *
+ * Returns:
+ *   The rotated image on success, NULL on failure.
+ *
+ * See also:
+ *   - <gdImageCopyRotated>
+ */
 BGD_DECLARE(gdImagePtr) gdImageRotateInterpolated(const gdImagePtr src, const float angle, int bgcolor)
 {
 	/* round to two decimals and keep the 100x multiplication to use it in the common square angles 
@@ -1806,10 +1826,20 @@
 	   slow animations, f.e. */
 	const int angle_rounded = fmod((int) floorf(angle * 100), 360 * 100);
 
-	if (bgcolor < 0) {
+	if (src == NULL || bgcolor < 0) {
 		return NULL;
 	}
 
+	/* impact perf a bit, but not that much. Implementation for palette
+	   images can be done at a later point.
+	*/
+	if (src->trueColor == 0) {
+		if (bgcolor < gdMaxColors) {
+			bgcolor =  gdTrueColorAlpha(src->red[bgcolor], src->green[bgcolor], src->blue[bgcolor], src->alpha[bgcolor]);
+		}
+		gdImagePaletteToTrueColor(src);
+	}
+
 	/* 0 && 90 degrees multiple rotation, 0 rotation simply clones the return image and convert it
 	   to truecolor, as we must return truecolor image. */
 	switch (angle_rounded) {
@@ -1838,7 +1868,7 @@
 			return gdImageRotate270(src, 0);
 	}
 
-	if (src == NULL || src->interpolation_id < 1 || src->interpolation_id > GD_METHOD_COUNT) {
+	if (src->interpolation_id < 1 || src->interpolation_id > GD_METHOD_COUNT) {
 		return NULL;
 	}
 
@@ -1856,13 +1886,9 @@
 }
 
 /**
- * Title: Affine transformation
+ * Group: Affine Transformation
  **/
 
-/**
- * Group: Transform
- **/
-
  static void gdImageClipRectangle(gdImagePtr im, gdRectPtr r)
 {
 	int c1x, c1y, c2x, c2y;
@@ -2117,9 +2143,26 @@
 	return GD_TRUE;
 }
 
-/*
-	Function: gdImageSetInterpolationMethod
-*/
+/**
+ * Group: Interpolation Method
+ */
+
+/**
+ * Function: gdImageSetInterpolationMethod
+ *
+ * Set the interpolation method for subsequent operations
+ *
+ * Parameters:
+ *   im - The image.
+ *   id - The interpolation method.
+ *
+ * Returns:
+ *   Non-zero on success, zero on failure.
+ *
+ * See also:
+ *   - <gdInterpolationMethod>
+ *   - <gdImageGetInterpolationMethod>
+ */
 BGD_DECLARE(int) gdImageSetInterpolationMethod(gdImagePtr im, gdInterpolationMethod id)
 {
 	if (im == NULL || (uintmax_t)id > GD_METHOD_COUNT) {
@@ -2202,13 +2245,24 @@
 }
 
 
-/*
-	Function: gdImageGetInterpolationMethod
-
-	Return the interpolation mode set in 'im'.  This is here so that
-	the value can be read via a language or VM with an FFI but no
-	(portable) way to extract the value from the struct.
-*/
+/**
+ * Function: gdImageGetInterpolationMethod
+ *
+ * Get the current interpolation method
+ *
+ * This is here so that the value can be read via a language or VM with an FFI
+ * but no (portable) way to extract the value from the struct.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * Returns:
+ *   The current interpolation method.
+ *
+ * See also:
+ *   - <gdInterpolationMethod>
+ *   - <gdImageSetInterpolationMethod>
+ */
 BGD_DECLARE(gdInterpolationMethod) gdImageGetInterpolationMethod(gdImagePtr im)
 {
     return im->interpolation_id;

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_io_dp.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_io_dp.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_io_dp.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -263,6 +263,7 @@
 	appendDynamic(dctx->dp, &b, 1);
 }
 
+/* returns the number of bytes actually read; 0 on EOF and error */
 static int dynamicGetbuf(gdIOCtxPtr ctx, void *buf, int len)
 {
 	int rlen, remain;
@@ -272,21 +273,25 @@
 	dctx = (dpIOCtxPtr) ctx;
 	dp = dctx->dp;
 
+	if (dp->pos < 0 || dp->pos >= dp->realSize) {
+		return 0;
+	}
+
 	remain = dp->logicalSize - dp->pos;
 	if(remain >= len) {
 		rlen = len;
 	} else {
-		if(remain == 0) {
-			/* 2.0.34: EOF is incorrect. We use 0 for
-			 * errors and EOF, just like fileGetbuf,
-			 * which is a simple fread() wrapper.
-			 * TBB. Original bug report: Daniel Cowgill. */
-			return 0; /* NOT EOF */
+		if(remain <= 0) {
+			return 0;
 		}
 
 		rlen = remain;
 	}
 
+	if (dp->pos + rlen > dp->realSize) {
+		rlen = dp->realSize - dp->pos;
+	}
+
 	memcpy(buf, (void *) ((char *)dp->data + dp->pos), rlen);
 	dp->pos += rlen;
 

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_jpeg.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_jpeg.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -21,6 +21,11 @@
  * Christian Aberger
  */
 
+/**
+ * File: JPEG IO
+ *
+ * Read and write JPEG images.
+ */
 
 #ifdef HAVE_CONFIG_H
 #	include "config.h"
@@ -169,27 +174,29 @@
     Nothing.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > int black, white;
-    > FILE *out;
-    > // Create the image
-    > im = gdImageCreate(100, 100);
-    > // Allocate background
-    > white = gdImageColorAllocate(im, 255, 255, 255);
-    > // Allocate drawing color
-    > black = gdImageColorAllocate(im, 0, 0, 0);
-    > // Draw rectangle
-    > gdImageRectangle(im, 0, 0, 99, 99, black);
-    > // Open output file in binary mode
-    > out = fopen("rect.jpg", "wb");
-    > // Write JPEG using default quality
-    > gdImageJpeg(im, out, -1);
-    > // Close file
-    > fclose(out);
-    > // Destroy image
-    > gdImageDestroy(im);
+    gdImagePtr im;
+    int black, white;
+    FILE *out;
+    // Create the image
+    im = gdImageCreate(100, 100);
+    // Allocate background
+    white = gdImageColorAllocate(im, 255, 255, 255);
+    // Allocate drawing color
+    black = gdImageColorAllocate(im, 0, 0, 0);
+    // Draw rectangle
+    gdImageRectangle(im, 0, 0, 99, 99, black);
+    // Open output file in binary mode
+    out = fopen("rect.jpg", "wb");
+    // Write JPEG using default quality
+    gdImageJpeg(im, out, -1);
+    // Close file
+    fclose(out);
+    // Destroy image
+    gdImageDestroy(im);
 
+    (end code)
 */
 
 BGD_DECLARE(void) gdImageJpeg(gdImagePtr im, FILE *outFile, int quality)
@@ -463,15 +470,17 @@
     On error, returns NULL.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > FILE *in;
-    > in = fopen("myjpeg.jpg", "rb");
-    > im = gdImageCreateFromJpegEx(in, GD_TRUE);
-    > fclose(in);
-    > // ... Use the image ...
-    > gdImageDestroy(im);
+    gdImagePtr im;
+    FILE *in;
+    in = fopen("myjpeg.jpg", "rb");
+    im = gdImageCreateFromJpegEx(in, GD_TRUE);
+    fclose(in);
+    // ... Use the image ...
+    gdImageDestroy(im);
 
+    (end code)
 */
 BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegEx(FILE *inFile, int ignore_warning)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_nnquant.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_nnquant.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_nnquant.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -506,9 +506,23 @@
 	if (verbose) gd_error_ex(GD_NOTICE, "finished 1D learning: final alpha=%f !\n",((float)alpha)/initalpha);
 }
 
-/*
-	Function: gdImageNeuQuant
-*/
+/**
+ * Function: gdImageNeuQuant
+ *
+ * Creates a new palette image from a truecolor image
+ *
+ * This is the same as calling <gdImageCreatePaletteFromTrueColor> with the
+ * quantization method <GD_QUANT_NEUQUANT>.
+ *
+ * Parameters:
+ *   im            - The image.
+ *   max_color     - The number of desired palette entries.
+ *   sample_factor - The quantization precision between 1 (highest quality) and
+ *                   10 (fastest).
+ *
+ * Returns:
+ *   A newly create palette image; NULL on failure.
+ */
 BGD_DECLARE(gdImagePtr) gdImageNeuQuant(gdImagePtr im, const int max_color, int sample_factor)
 {
 	const int newcolors = max_color;

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_png.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_png.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_png.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -42,6 +42,12 @@
 
   ---------------------------------------------------------------------------*/
 
+/**
+ * File: PNG IO
+ *
+ * Read and write PNG images.
+ */
+
 #ifdef PNG_SETJMP_SUPPORTED
 typedef struct _jmpbuf_wrapper {
 	jmp_buf jmpbuf;
@@ -143,16 +149,18 @@
     A pointer to the new image or NULL if an error occurred.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > ... inside a function ...
-    > FILE *in;
-    > in = fopen("mypng.png", "rb");
-    > im = gdImageCreateFromPng(in);
-    > fclose(in);
-    > // ... Use the image ...
-    > gdImageDestroy(im);
+    gdImagePtr im;
+    ... inside a function ...
+    FILE *in;
+    in = fopen("mypng.png", "rb");
+    im = gdImageCreateFromPng(in);
+    fclose(in);
+    // ... Use the image ...
+    gdImageDestroy(im);
 
+    (end code)
  */
 BGD_DECLARE(gdImagePtr) gdImageCreateFromPng (FILE * inFile)
 {
@@ -579,20 +587,22 @@
     Nothing.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > int black, white;
-    > FILE *out;
-    > 
-    > im = gdImageCreate(100, 100);              // Create the image 
-    > white = gdImageColorAllocate(im, 255, 255, 255); // Alloc background 
-    > black = gdImageColorAllocate(im, 0, 0, 0); // Allocate drawing color 
-    > gdImageRectangle(im, 0, 0, 99, 99, black); // Draw rectangle 
-    > out = fopen("rect.png", "wb");             // Open output file (binary) 
-    > gdImagePngEx(im, out, 9);                  // Write PNG, max compression
-    > fclose(out);                               // Close file 
-    > gdImageDestroy(im);                        // Destroy image 
+    gdImagePtr im;
+    int black, white;
+    FILE *out;
+     
+    im = gdImageCreate(100, 100);              // Create the image
+    white = gdImageColorAllocate(im, 255, 255, 255); // Alloc background
+    black = gdImageColorAllocate(im, 0, 0, 0); // Allocate drawing color
+    gdImageRectangle(im, 0, 0, 99, 99, black); // Draw rectangle
+    out = fopen("rect.png", "wb");             // Open output file (binary)
+    gdImagePngEx(im, out, 9);                  // Write PNG, max compression
+    fclose(out);                               // Close file
+    gdImageDestroy(im);                        // Destroy image
 
+    (end code)
 */
 BGD_DECLARE(void) gdImagePngEx (gdImagePtr im, FILE * outFile, int level)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_rotate.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_rotate.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_rotate.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -362,194 +362,3 @@
 
 	return dst;
 }
-
-gdImagePtr gdImageRotate45 (gdImagePtr src, double dAngle, int clrBack, int ignoretransparent)
-{
-	gdImagePtr dst1,dst2,dst3;
-	double dRadAngle, dSinE, dTan, dShear;
-	double dOffset;     /* Variable skew offset */
-	int u, iShear, newx, newy;
-	int clrBackR, clrBackG, clrBackB, clrBackA;
-
-	/* See GEMS I for the algorithm details */
-	dRadAngle = dAngle * ROTATE_DEG2RAD; /* Angle in radians */
-	dSinE = sin (dRadAngle);
-	dTan = tan (dRadAngle / 2.0);
-
-	newx = (int)(src->sx + src->sy * fabs(dTan));
-	newy = src->sy;
-
-	/* 1st shear */
-	dst1 = gdImageCreateTrueColor(newx, newy);
-	/******* Perform 1st shear (horizontal) ******/
-	if (dst1 == NULL) {
-		return NULL;
-	}
-#ifdef HAVE_GD_BUNDLED
-	dst1->alphaBlendingFlag = gdEffectReplace;
-#else
-	gdImageAlphaBlending(dst1, 0);
-#endif
-	if (dAngle == 0.0) {
-		/* Returns copy of src */
-		gdImageCopy (dst1, src,0,0,0,0,src->sx,src->sy);
-		return dst1;
-	}
-
-	gdImagePaletteCopy (dst1, src);
-
-	if (ignoretransparent) {
-		if (gdImageTrueColor(src)) {
-			dst1->transparent = src->transparent;
-		} else {
-
-			dst1->transparent = gdTrueColorAlpha(gdImageRed(src, src->transparent), gdImageBlue(src, src->transparent), gdImageGreen(src, src->transparent), 127);
-		}
-	}
-
-	for (u = 0; u < dst1->sy; u++) {
-		if (dTan >= 0.0) {
-			dShear = ((double)(u + 0.5)) * dTan;
-		} else {
-			dShear = ((double)(u - dst1->sy) + 0.5) * dTan;
-		}
-
-		iShear = (int)floor(dShear);
-		gdImageSkewX(dst1, src, u, iShear, (dShear - iShear), clrBack, ignoretransparent);
-	}
-
-	/*
-	The 1st shear may use the original clrBack as color index
-	Convert it once here
-	*/
-	if(!src->trueColor) {
-		clrBackR = gdImageRed(src, clrBack);
-		clrBackG = gdImageGreen(src, clrBack);
-		clrBackB = gdImageBlue(src, clrBack);
-		clrBackA = gdImageAlpha(src, clrBack);
-		clrBack =  gdTrueColorAlpha(clrBackR, clrBackG, clrBackB, clrBackA);
-	}
-	/* 2nd shear */
-	newx = dst1->sx;
-
-	if (dSinE > 0.0) {
-		dOffset = (src->sx-1) * dSinE;
-	} else {
-		dOffset = -dSinE *  (src->sx - newx);
-	}
-
-	newy = (int) ((double) src->sx * fabs( dSinE ) + (double) src->sy * cos (dRadAngle))+1;
-
-	dst2 = gdImageCreateTrueColor(newx, newy);
-	if (dst2 == NULL) {
-		gdImageDestroy(dst1);
-		return NULL;
-	}
-
-#ifdef HAVE_GD_BUNDLED
-	dst2->alphaBlendingFlag = gdEffectReplace;
-#else
-	gdImageAlphaBlending(dst2, 0);
-#endif
-
-	if (ignoretransparent) {
-		dst2->transparent = dst1->transparent;
-	}
-
-	for (u = 0; u < dst2->sx; u++, dOffset -= dSinE) {
-		iShear = (int)floor (dOffset);
-		gdImageSkewY(dst2, dst1, u, iShear, (dOffset - (double)iShear), clrBack, ignoretransparent);
-	}
-
-	/* 3rd shear */
-	gdImageDestroy(dst1);
-
-	newx = (int) ((double)src->sy * fabs (dSinE) + (double)src->sx * cos (dRadAngle)) + 1;
-	newy = dst2->sy;
-
-	dst3 = gdImageCreateTrueColor(newx, newy);
-	if (dst3 == NULL) {
-		gdImageDestroy(dst2);
-		return NULL;
-	}
-
-#ifdef HAVE_GD_BUNDLED
-	dst3->alphaBlendingFlag = gdEffectReplace;
-#else
-	gdImageAlphaBlending(dst3, 0);
-#endif
-
-	if (ignoretransparent) {
-		dst3->transparent = dst2->transparent;
-	}
-
-	if (dSinE >= 0.0) {
-		dOffset = (double)(src->sx - 1) * dSinE * -dTan;
-	} else {
-		dOffset = dTan * ((double)(src->sx - 1) * -dSinE + (double)(1 - newy));
-	}
-
-	for (u = 0; u < dst3->sy; u++, dOffset += dTan) {
-		int iShear = (int)floor(dOffset);
-		gdImageSkewX(dst3, dst2, u, iShear, (dOffset - iShear), clrBack, ignoretransparent);
-	}
-
-	gdImageDestroy(dst2);
-
-	return dst3;
-}
-
-gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack, int ignoretransparent)
-{
-	gdImagePtr pMidImg;
-	gdImagePtr rotatedImg;
-
-	if (src == NULL) {
-		return NULL;
-	}
-
-	if (!gdImageTrueColor(src) && (clrBack < 0 || clrBack>=gdImageColorsTotal(src))) {
-		return NULL;
-	}
-
-	while (dAngle >= 360.0) {
-		dAngle -= 360.0;
-	}
-
-	while (dAngle < 0) {
-		dAngle += 360.0;
-	}
-
-	if (dAngle == 90.00) {
-		return gdImageRotate90(src, ignoretransparent);
-	}
-	if (dAngle == 180.00) {
-		return gdImageRotate180(src, ignoretransparent);
-	}
-	if(dAngle == 270.00) {
-		return gdImageRotate270 (src, ignoretransparent);
-	}
-
-	if ((dAngle > 45.0) && (dAngle <= 135.0)) {
-		pMidImg = gdImageRotate90 (src, ignoretransparent);
-		dAngle -= 90.0;
-	} else if ((dAngle > 135.0) && (dAngle <= 225.0)) {
-		pMidImg = gdImageRotate180 (src, ignoretransparent);
-		dAngle -= 180.0;
-	} else if ((dAngle > 225.0) && (dAngle <= 315.0)) {
-		pMidImg = gdImageRotate270 (src, ignoretransparent);
-		dAngle -= 270.0;
-	} else {
-		return gdImageRotate45 (src, dAngle, clrBack, ignoretransparent);
-	}
-
-	if (pMidImg == NULL) {
-		return NULL;
-	}
-
-	rotatedImg = gdImageRotate45 (pMidImg, dAngle, clrBack, ignoretransparent);
-	gdImageDestroy(pMidImg);
-
-	return rotatedImg;
-}
-/* End Rotate function */

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_tga.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_tga.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_tga.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,9 @@
+/**
+ * File: TGA Input
+ *
+ * Read TGA images.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
@@ -201,12 +207,13 @@
 {
 	int pixel_block_size = (tga->bits / 8);
 	int image_block_size = (tga->width * tga->height) * pixel_block_size;
-	uint8_t* decompression_buffer = NULL;
+	int* decompression_buffer = NULL;
 	unsigned char* conversion_buffer = NULL;
 	int buffer_caret = 0;
 	int bitmap_caret = 0;
 	int i = 0;
 	int encoded_pixels;
+	int rle_size;
 
 	if(overflow2(tga->width, tga->height)) {
 		return -1;
@@ -260,7 +267,7 @@
 		/*! \brief Read in RLE compressed RGB TGA
 		 *  Chunk load the pixel data from an RLE compressed RGB type TGA.
 		 */
-		decompression_buffer = (uint8_t*) gdMalloc(image_block_size * sizeof(uint8_t));
+		decompression_buffer = (int*) gdMalloc(image_block_size * sizeof(int));
 		if (decompression_buffer == NULL) {
 			return -1;
 		}
@@ -271,7 +278,8 @@
 			return -1;
 		}
 
-		if (gdGetBuf(conversion_buffer, image_block_size, ctx) != image_block_size) {
+		rle_size = gdGetBuf(conversion_buffer, image_block_size, ctx);
+		if (rle_size <= 0) {
 			gdFree(conversion_buffer);
 			gdFree(decompression_buffer);
 			return -1;
@@ -279,7 +287,7 @@
 
 		buffer_caret = 0;
 
-		while( buffer_caret < image_block_size) {
+		while( buffer_caret < rle_size) {
 			decompression_buffer[buffer_caret] = (int)conversion_buffer[buffer_caret];
 			buffer_caret++;
 		}
@@ -287,12 +295,19 @@
 		buffer_caret = 0;
 
 		while( bitmap_caret < image_block_size ) {
-			
+
+			if (buffer_caret + pixel_block_size > rle_size) {
+				gdFree( decompression_buffer );
+				gdFree( conversion_buffer );
+				return -1;
+			}
+
 			if ((decompression_buffer[buffer_caret] & TGA_RLE_FLAG) == TGA_RLE_FLAG) {
 				encoded_pixels = ( ( decompression_buffer[ buffer_caret ] & ~TGA_RLE_FLAG ) + 1 );
 				buffer_caret++;
 
-				if ((bitmap_caret + (encoded_pixels * pixel_block_size)) >= image_block_size) {
+				if ((bitmap_caret + (encoded_pixels * pixel_block_size)) > image_block_size
+						|| buffer_caret + pixel_block_size > rle_size) {
 					gdFree( decompression_buffer );
 					gdFree( conversion_buffer );
 					return -1;
@@ -299,7 +314,7 @@
 				}
 
 				for (i = 0; i < encoded_pixels; i++) {
-					memcpy(tga->bitmap + bitmap_caret, decompression_buffer + buffer_caret, pixel_block_size);
+					memcpy(tga->bitmap + bitmap_caret, decompression_buffer + buffer_caret, pixel_block_size * sizeof(int));
 					bitmap_caret += pixel_block_size;
 				}
 				buffer_caret += pixel_block_size;
@@ -308,13 +323,14 @@
 				encoded_pixels = decompression_buffer[ buffer_caret ] + 1;
 				buffer_caret++;
 
-				if ((bitmap_caret + (encoded_pixels * pixel_block_size)) >= image_block_size) {
+				if ((bitmap_caret + (encoded_pixels * pixel_block_size)) > image_block_size
+						|| buffer_caret + (encoded_pixels * pixel_block_size) > rle_size) {
 					gdFree( decompression_buffer );
 					gdFree( conversion_buffer );
 					return -1;
 				}
 
-				memcpy(tga->bitmap + bitmap_caret, decompression_buffer + buffer_caret, encoded_pixels * pixel_block_size);
+				memcpy(tga->bitmap + bitmap_caret, decompression_buffer + buffer_caret, encoded_pixels * pixel_block_size * sizeof(int));
 				bitmap_caret += (encoded_pixels * pixel_block_size);
 				buffer_caret += (encoded_pixels * pixel_block_size);
 			}

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_tiff.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_tiff.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_tiff.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -29,6 +29,15 @@
  */
 /* $Id$ */
 
+/**
+ * File: TIFF IO
+ *
+ * Read and write TIFF images.
+ *
+ * There is only most basic support for the TIFF format available for now;
+ * for instance, multiple pages are not yet supported.
+ */
+
 #ifdef HAVE_CONFIG_H
 #	include "config.h"
 #endif
@@ -750,6 +759,7 @@
 	int height = im->sy;
 	uint32 *buffer;
 	uint32 rgba;
+	int success;
 
 	/* switch off colour merging on target gd image just while we write out
 	 * content - we want to preserve the alpha data until the user chooses
@@ -762,18 +772,20 @@
 		return GD_FAILURE;
 	}
 
-	TIFFReadRGBAImage(tif, width, height, buffer, 0);
+	success = TIFFReadRGBAImage(tif, width, height, buffer, 1);
 
-	for(y = 0; y < height; y++) {
-		for(x = 0; x < width; x++) {
-			/* if it doesn't already exist, allocate a new colour,
-			 * else use existing one */
-			rgba = buffer[(y * width + x)];
-			a = (0xff - TIFFGetA(rgba)) / 2;
-			color = gdTrueColorAlpha(TIFFGetR(rgba), TIFFGetG(rgba), TIFFGetB(rgba), a);
-
-			/* set pixel colour to this colour */
-			gdImageSetPixel(im, x, height - y - 1, color);
+	if (success) {
+		for(y = 0; y < height; y++) {
+			for(x = 0; x < width; x++) {
+				/* if it doesn't already exist, allocate a new colour,
+				 * else use existing one */
+				rgba = buffer[(y * width + x)];
+				a = (0xff - TIFFGetA(rgba)) / 2;
+				color = gdTrueColorAlpha(TIFFGetR(rgba), TIFFGetG(rgba), TIFFGetB(rgba), a);
+	
+				/* set pixel colour to this colour */
+				gdImageSetPixel(im, x, height - y - 1, color);
+			}
 		}
 	}
 
@@ -781,7 +793,7 @@
 
 	/* now reset colour merge for alpha blending routines */
 	gdImageAlphaBlending(im, alphaBlendingFlag);
-	return GD_SUCCESS;
+	return success;
 }
 
 /*

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_topal.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_topal.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_topal.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -28,6 +28,11 @@
  * fundamental assumptions even hold with an irregularly spaced color map.
  */
 
+/**
+ * File: Color Quantization
+ *
+ * Functions for truecolor to palette conversion
+ */
 
 /*
  * THOMAS BOUTELL & BAREND GEHRELS, february 2003
@@ -659,7 +664,7 @@
 		}
 
 	/* 2.0.16: Paul den Dulk found an occasion where total can be 0 */
-	if (count) {
+	if (total) {
 		nim->red[icolor] = (int) ((c0total + (total >> 1)) / total);
 		nim->green[icolor] = (int) ((c1total + (total >> 1)) / total);
 		nim->blue[icolor] = (int) ((c2total + (total >> 1)) / total);
@@ -1365,16 +1370,26 @@
 }
 
 
-/*
-	Function: gdImageTrueColorToPaletteSetMethod
-
-	Selects quantization method used for subsequent gdImageTrueColorToPalette calls.
-	See gdPaletteQuantizationMethod enum (e.g. GD_QUANT_NEUQUANT, GD_QUANT_LIQ).
-	Speed is from 1 (highest quality) to 10 (fastest).
-	Speed 0 selects method-specific default (recommended).
-
-	Returns FALSE if the given method is invalid or not available.
-*/
+/**
+ * Function: gdImageTrueColorToPaletteSetMethod
+ *
+ * Selects the quantization method
+ *
+ * That quantization method is used for all subsequent
+ * <gdImageTrueColorToPalette> and <gdImageCreatePaletteFromTrueColor> calls.
+ *
+ * Parameters:
+ *   im     - The image.
+ *   method - The quantization method, see <gdPaletteQuantizationMethod>.
+ *   speed  - The quantization speed between 1 (highest quality) and
+ *            10 (fastest). 0 selects a method-specific default (recommended).
+ *   
+ * Returns:
+ *   Zero if the given method is invalid or not available; non-zero otherwise.
+ *
+ * See also:
+ *   - <gdImageTrueColorToPaletteSetQuality>
+ */
 BGD_DECLARE(int) gdImageTrueColorToPaletteSetMethod (gdImagePtr im, int method, int speed)
 {
 #ifndef HAVE_LIBIMAGEQUANT
@@ -1394,15 +1409,25 @@
 	return TRUE;
 }
 
-/*
-	Function: gdImageTrueColorToPaletteSetQuality
-
-	Chooses quality range that subsequent call to gdImageTrueColorToPalette will aim for.
-	Min and max quality is in range 1-100 (1 = ugly, 100 = perfect). Max must be higher than min.
-	If palette cannot represent image with at least min_quality, then image will remain true-color.
-	If palette can represent image with quality better than max_quality, then lower number of colors will be used.
-	This function has effect only when GD_QUANT_LIQ method has been selected.
-*/
+/**
+ * Function: gdImageTrueColorToPaletteSetQuality
+ *
+ * Chooses a quality range for quantization
+ *
+ * That quality range is used in all subsequent calls to
+ * <gdImageTrueColorToPalette> and <gdImageCreatePaletteFromTrueColor>
+ * if the quantization method is <GD_QUANT_LIQ>.
+ *
+ * Parameters:
+ *   im          - The image.
+ *   min_quality - The minimum quality in range 1-100 (1 = ugly, 100 = perfect).
+ *                 If the palette cannot represent the image with at least
+ *                 min_quality, then no conversion is done.
+ *   max_quality - The maximum quality in range 1-100 (1 = ugly, 100 = perfect),
+ *                 which must be higher than the min_quality. If the palette can
+ *                 represent the image with a quality better than max_quality,
+ *                 then fewer colors than requested will be used.
+ */
 BGD_DECLARE(void) gdImageTrueColorToPaletteSetQuality (gdImagePtr im, int min_quality, int max_quality)
 {
 	if (min_quality >= 0 && min_quality <= 100 &&
@@ -1414,9 +1439,24 @@
 
 static int gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colorsWanted, gdImagePtr *cimP);
 
-/*
-	Function: gdImageCreatePaletteFromTrueColor
-*/
+/**
+ * Function: gdImageCreatePaletteFromTrueColor
+ *
+ * Creates a new palette image from a truecolor image
+ *
+ * Parameters:
+ *   im           - The image.
+ *   dither       - Whether dithering should be applied.
+ *   colorsWanted - The number of desired palette entries.
+ *
+ * Returns:
+ *   A newly create palette image; NULL on failure.
+ *   
+ * See also:
+ *   - <gdImageCreatePaletteFromTrueColor>
+ *   - <gdImageTrueColorToPaletteSetMethod>
+ *   - <gdImageNeuQuant>
+ */
 BGD_DECLARE(gdImagePtr) gdImageCreatePaletteFromTrueColor (gdImagePtr im, int dither, int colorsWanted)
 {
 	gdImagePtr nim;
@@ -1426,9 +1466,24 @@
 	return NULL;
 }
 
-/*
-	Function: gdImageTrueColorToPalette
-*/
+/**
+ * Function: gdImageTrueColorToPalette
+ *
+ * Converts a truecolor image to a palette image
+ *
+ * Parameters:
+ *   im           - The image.
+ *   dither       - Whether dithering should be applied.
+ *   colorsWanted - The number of desired palette entries.
+ *
+ * Returns:
+ *   Non-zero if the conversion succeeded, zero otherwise.
+ *
+ * See also:
+ *   - <gdImageCreatePaletteFromTrueColor>
+ *   - <gdImageTrueColorToPaletteSetMethod>
+ *   - <gdImagePaletteToTrueColor>
+ */
 BGD_DECLARE(int) gdImageTrueColorToPalette (gdImagePtr im, int dither, int colorsWanted)
 {
 	return gdImageTrueColorToPaletteBody(im, dither, colorsWanted, 0);
@@ -1535,6 +1590,7 @@
 		if (!nim) {
 			return FALSE;
 		} else {
+			free_truecolor_image_data(oim);
 			gdImageCopy(oim, nim, 0, 0, 0, 0, oim->sx, oim->sy);
 			gdImageDestroy(nim);
 		}

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_transform.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_transform.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_transform.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,8 @@
+/**
+ * File: Transformations
+ */
+
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
@@ -4,9 +9,20 @@
 
 #include "gd.h"
 
-/*
-	Function: gdImageFlipVertical
-*/
+/**
+ * Function: gdImageFlipVertical
+ *
+ * Flip an image vertically
+ *
+ * The image is mirrored upside-down.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * See also:
+ *   - <gdImageFlipHorizontal>
+ *   - <gdImageFlipBoth>
+ */
 BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im)
 {
 	register int x, y;
@@ -35,9 +51,20 @@
 	return;
 }
 
-/*
-	Function: gdImageFlipHorizontal
-*/
+/**
+ * Function: gdImageFlipHorizontal
+ *
+ * Flip an image horizontally
+ *
+ * The image is mirrored left-right.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * See also:
+ *   - <gdImageFlipVertical>
+ *   - <gdImageFlipBoth>
+ */
 BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im)
 {
 
@@ -74,9 +101,20 @@
 	}
 }
 
-/*
-	Function: gdImageFlipBoth
-*/
+/**
+ * Function: gdImageFlipBoth
+ *
+ * Flip an image vertically and horizontally
+ *
+ * The image is mirrored upside-down and left-right.
+ *
+ * Parameters:
+ *   im - The image.
+ *
+ * See also:
+ *   - <gdImageFlipVertical>
+ *   - <gdImageFlipHorizontal>
+ */
 BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im)
 {
 	gdImageFlipVertical(im);

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_wbmp.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_wbmp.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_wbmp.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -51,6 +51,12 @@
  *--------------------------------------------------------------------------
  */
 
+/**
+ * File: WBMP IO
+ *
+ * Read and write WBMP images.
+ */
+
 #ifdef HAVE_CONFIG_H
 #	include "config.h"
 #endif
@@ -200,15 +206,17 @@
     A pointer to the new image or NULL if an error occurred.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > FILE *in;
-    > in = fopen("mywbmp.wbmp", "rb");
-    > im = gdImageCreateFromWBMP(in);
-    > fclose(in);
-    > // ... Use the image ...
-    > gdImageDestroy(im);
+    gdImagePtr im;
+    FILE *in;
+    in = fopen("mywbmp.wbmp", "rb");
+    im = gdImageCreateFromWBMP(in);
+    fclose(in);
+    // ... Use the image ...
+    gdImageDestroy(im);
 
+    (end code)
 */
 
 BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMP(FILE *inFile)

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_webp.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_webp.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_webp.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,9 @@
+/**
+ * File: WebP IO
+ *
+ * Read and write WebP images.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
@@ -16,7 +22,43 @@
 
 #define GD_WEBP_ALLOC_STEP (4*1024)
 
-gdImagePtr gdImageCreateFromWebp (FILE * inFile)
+/*
+  Function: gdImageCreateFromWebp
+
+    <gdImageCreateFromWebp> is called to load truecolor images from
+    WebP format files. Invoke <gdImageCreateFromWebp> with an
+    already opened pointer to a file containing the desired
+    image. <gdImageCreateFromWebp> returns a <gdImagePtr> to the new
+    truecolor image, or NULL if unable to load the image (most often
+    because the file is corrupt or does not contain a WebP
+    image). <gdImageCreateFromWebp> does not close the file.
+
+    You can inspect the sx and sy members of the image to determine
+    its size. The image must eventually be destroyed using
+    <gdImageDestroy>.
+
+    *The returned image is always a truecolor image.*
+
+  Variants:
+
+    <gdImageCreateFromJpegPtr> creates an image from WebP data
+    already in memory.
+
+    <gdImageCreateFromJpegCtx> reads its data via the function
+    pointers in a <gdIOCtx> structure.
+
+  Parameters:
+
+    infile - The input FILE pointer.
+
+  Returns:
+
+    A pointer to the new *truecolor* image.  This will need to be
+    destroyed with <gdImageDestroy> once it is no longer needed.
+
+    On error, returns NULL.
+*/
+BGD_DECLARE(gdImagePtr) gdImageCreateFromWebp (FILE * inFile)
 {
 	gdImagePtr im;
 	gdIOCtx *in = gdNewFileCtx(inFile);
@@ -30,7 +72,17 @@
 }
 
 
-gdImagePtr gdImageCreateFromWebpPtr (int size, void *data)
+/*
+  Function: gdImageCreateFromWebpPtr
+
+    See <gdImageCreateFromWebp>.
+
+  Parameters:
+
+    size            - size of WebP data in bytes.
+    data            - pointer to WebP data.
+*/
+BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpPtr (int size, void *data)
 {
 	gdImagePtr im;
 	gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
@@ -41,7 +93,12 @@
 	return im;
 }
 
-gdImagePtr gdImageCreateFromWebpCtx (gdIOCtx * infile)
+/*
+  Function: gdImageCreateFromWebpCtx
+
+    See <gdImageCreateFromWebp>.
+*/
+BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpCtx (gdIOCtx * infile)
 {
 	int    width, height;
 	uint8_t   *filedata = NULL;
@@ -105,7 +162,9 @@
 	return im;
 }
 
-void gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quantization)
+
+/* returns 0 on success, 1 on failure */
+static int _gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quality)
 {
 	uint8_t *argb;
 	int x, y;
@@ -112,23 +171,32 @@
 	uint8_t *p;
 	uint8_t *out;
 	size_t out_size;
+    int ret = 0;
 
 	if (im == NULL) {
-		return;
+		return 1;
 	}
 
 	if (!gdImageTrueColor(im)) {
-		gd_error("Paletter image not supported by webp");
-		return;
+		gd_error("Palette image not supported by webp");
+		return 1;
 	}
 
-	if (quantization == -1) {
-		quantization = 80;
+	if (quality == -1) {
+		quality = 80;
 	}
 
+	if (overflow2(gdImageSX(im), 4)) {
+		return 1;
+	}
+
+	if (overflow2(gdImageSX(im) * 4, gdImageSY(im))) {
+		return 1;
+	}
+
 	argb = (uint8_t *)gdMalloc(gdImageSX(im) * 4 * gdImageSY(im));
 	if (!argb) {
-		return;
+		return 1;
 	}
 	p = argb;
 	for (y = 0; y < gdImageSY(im); y++) {
@@ -148,9 +216,10 @@
 			*(p++) = a;
 		}
 	}
-	out_size = WebPEncodeRGBA(argb, gdImageSX(im), gdImageSY(im), gdImageSX(im) * 4, quantization, &out);
+	out_size = WebPEncodeRGBA(argb, gdImageSX(im), gdImageSY(im), gdImageSX(im) * 4, quality, &out);
 	if (out_size == 0) {
 		gd_error("gd-webp encoding failed");
+        ret = 1;
 		goto freeargb;
 	}
 	gdPutBuf(out, out_size, outfile);
@@ -158,23 +227,86 @@
 
 freeargb:
 	gdFree(argb);
+
+    return ret;
 }
 
+
 /*
-	Function: gdImageWebpEx
+  Function: gdImageWebpCtx
+
+    Write the image as WebP data via a <gdIOCtx>. See <gdImageWebpEx>
+    for more details.
+
+  Parameters:
+
+    im      - The image to write.
+    outfile - The output sink.
+    quality - Image quality.
+
+  Returns:
+
+    Nothing.
 */
-BGD_DECLARE(void) gdImageWebpEx (gdImagePtr im, FILE * outFile, int quantization)
+BGD_DECLARE(void) gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quality)
 {
+	_gdImageWebpCtx(im, outfile, quality);
+}
+
+/*
+  Function: gdImageWebpEx
+
+    <gdImageWebpEx> outputs the specified image to the specified file in
+    WebP format. The file must be open for writing. Under MSDOS and
+    all versions of Windows, it is important to use "wb" as opposed to
+    simply "w" as the mode when opening the file, and under Unix there
+    is no penalty for doing so. <gdImageWebpEx> does not close the file;
+    your code must do so.
+
+	If _quality_ is -1, a reasonable quality value (which should yield a
+	good general quality / size tradeoff for most situations) is used. Otherwise
+	_quality_ should be a value in the range 0-100, higher quality values
+	usually implying both higher quality and larger image sizes.
+
+  Variants:
+
+    <gdImageWebpCtx> stores the image using a <gdIOCtx> struct.
+
+    <gdImageWebpPtrEx> stores the image to RAM.
+
+  Parameters:
+
+    im      - The image to save.
+    outFile - The FILE pointer to write to.
+    quality - Compression quality (0-100).
+
+  Returns:
+
+    Nothing.
+*/
+BGD_DECLARE(void) gdImageWebpEx (gdImagePtr im, FILE * outFile, int quality)
+{
 	gdIOCtx *out = gdNewFileCtx(outFile);
 	if (out == NULL) {
 		return;
 	}
-	gdImageWebpCtx(im, out, quantization);
+	_gdImageWebpCtx(im, out, quality);
 	out->gd_free(out);
 }
 
 /*
-	Function: gdImageWebp
+  Function: gdImageWebp
+
+    Variant of <gdImageWebpEx> which uses the default quality (-1).
+
+  Parameters:
+
+    im      - The image to save
+    outFile - The FILE pointer to write to.
+
+  Returns:
+
+    Nothing.
 */
 BGD_DECLARE(void) gdImageWebp (gdImagePtr im, FILE * outFile)
 {
@@ -182,12 +314,14 @@
 	if (out == NULL) {
 		return;
 	}
-	gdImageWebpCtx(im, out, -1);
+	_gdImageWebpCtx(im, out, -1);
 	out->gd_free(out);
 }
 
 /*
-	Function: gdImageWebpPtr
+  Function: gdImageWebpPtr
+
+    See <gdImageWebpEx>.
 */
 BGD_DECLARE(void *) gdImageWebpPtr (gdImagePtr im, int *size)
 {
@@ -196,8 +330,11 @@
 	if (out == NULL) {
 		return NULL;
 	}
-	gdImageWebpCtx(im, out, -1);
-	rv = gdDPExtractData(out, size);
+	if (_gdImageWebpCtx(im, out, -1)) {
+		rv = NULL;
+	} else {
+		rv = gdDPExtractData(out, size);
+	}
 	out->gd_free(out);
 
 	return rv;
@@ -204,9 +341,11 @@
 }
 
 /*
-	Function: gdImageWebpPtrEx
+  Function: gdImageWebpPtrEx
+
+    See <gdImageWebpEx>.
 */
-BGD_DECLARE(void *) gdImageWebpPtrEx (gdImagePtr im, int *size, int quantization)
+BGD_DECLARE(void *) gdImageWebpPtrEx (gdImagePtr im, int *size, int quality)
 {
 	void *rv;
 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
@@ -213,8 +352,11 @@
 	if (out == NULL) {
 		return NULL;
 	}
-	gdImageWebpCtx(im, out, quantization);
-	rv = gdDPExtractData(out, size);
+	if (_gdImageWebpCtx(im, out, quality)) {
+        rv = NULL;
+    } else {
+        rv = gdDPExtractData(out, size);
+    }
 	out->gd_free(out);
 	return rv;
 }

Modified: trunk/Build/source/libs/gd/libgd-src/src/gd_xbm.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gd_xbm.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gd_xbm.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,3 +1,9 @@
+/**
+ * File: XBM IO
+ *
+ * Read and write XBM images.
+ */
+
 #ifdef HAVE_CONFIG_H
 #	include "config.h"
 #endif
@@ -43,14 +49,17 @@
     A pointer to the new image or NULL if an error occurred.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > FILE *in;
-    > in = fopen("myxbm.xbm", "rb");
-    > im = gdImageCreateFromXbm(in);
-    > fclose(in);
-    > // ... Use the image ...
-    > gdImageDestroy(im);
+    gdImagePtr im;
+    FILE *in;
+    in = fopen("myxbm.xbm", "rb");
+    im = gdImageCreateFromXbm(in);
+    fclose(in);
+    // ... Use the image ...
+    gdImageDestroy(im);
+
+    (end code)
 */
 BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm(FILE * fd)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdfontg.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdfontg.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdfontg.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -10,6 +10,15 @@
    "Libor Skarvada, libor at informatics.muni.cz"
  */
 
+/**
+ * File: Giant Font
+ *
+ * A very large ISO-8859-2 raster font (9x15 pixels).
+ *
+ * The font is supposed to be used with <gdImageChar> and <gdImageString>
+ * and their variants.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -4382,9 +4391,11 @@
 
 BGD_EXPORT_DATA_PROT gdFontPtr gdFontGiant = &gdFontGiantRep;
 
-/*
-	Function: gdFontGetGiant
-*/
+/**
+ * Function: gdFontGetGiant
+ *
+ * Returns the built-in giant font.
+ */
 BGD_DECLARE(gdFontPtr) gdFontGetGiant (void)
 {
 	return gdFontGiant;

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdfontl.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdfontl.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdfontl.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -11,6 +11,15 @@
    "Libor Skarvada, libor at informatics.muni.cz"
  */
 
+/**
+ * File: Large Font
+ *
+ * A large ISO-8859-2 raster font (8x16 pixels).
+ *
+ * The font is supposed to be used with <gdImageChar> and <gdImageString>
+ * and their variants.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -4639,9 +4648,11 @@
 
 BGD_EXPORT_DATA_PROT gdFontPtr gdFontLarge = &gdFontLargeRep;
 
-/*
-	Function: gdFontGetLarge
-*/
+/**
+ * Function: gdFontGetLarge
+ *
+ * Returns the built-in large font.
+ */
 BGD_DECLARE(gdFontPtr)
 gdFontGetLarge (void)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdfontmb.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdfontmb.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdfontmb.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -9,6 +9,15 @@
    No copyright info was found in the original bdf.
  */
 
+/**
+ * File: Medium Bold Font
+ *
+ * A medium bold ISO-8859-2 raster font (7x13 pixels).
+ *
+ * The font is supposed to be used with <gdImageChar> and <gdImageString>
+ * and their variants.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -3869,9 +3878,11 @@
 
 BGD_EXPORT_DATA_PROT gdFontPtr gdFontMediumBold = &gdFontMediumBoldRep;
 
-/*
-	Function: gdFontGetMediumBold
-*/
+/**
+ * Function: gdFontGetMediumBold
+ *
+ * Returns the built-in medium bold font.
+ */
 BGD_DECLARE(gdFontPtr)
 gdFontGetMediumBold (void)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdfonts.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdfonts.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdfonts.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -7,6 +7,15 @@
    No copyright info was found in the original bdf.
  */
 
+/**
+ * File: Small Font
+ *
+ * A small ISO-8859-2 raster font (7x13 pixels).
+ *
+ * The font is supposed to be used with <gdImageChar> and <gdImageString>
+ * and their variants.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -3867,9 +3876,11 @@
 
 BGD_EXPORT_DATA_PROT gdFontPtr gdFontSmall = &gdFontSmallRep;
 
-/*
-	Function: gdFontGetSmall
-*/
+/**
+ * Function: gdFontGetSmall
+ *
+ * Returns the built-in small font.
+ */
 BGD_DECLARE(gdFontPtr)
 gdFontGetSmall (void)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdfontt.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdfontt.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdfontt.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -10,6 +10,15 @@
    "Libor Skarvada, libor at informatics.muni.cz"
  */
 
+/**
+ * File: Tiny Font
+ *
+ * A very small ISO-8859-2 raster font (5x8 pixels).
+ *
+ * The font is supposed to be used with <gdImageChar> and <gdImageString>
+ * and their variants.
+ */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -2590,9 +2599,11 @@
 
 BGD_EXPORT_DATA_PROT gdFontPtr gdFontTiny = &gdFontTinyRep;
 
-/*
-	Function: gdFontGetTiny
-*/
+/**
+ * Function: gdFontGetTiny
+ *
+ * Returns the built-in tiny font.
+ */
 BGD_DECLARE(gdFontPtr)
 gdFontGetTiny (void)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdft.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdft.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdft.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -6,6 +6,10 @@
 /********************************************/
 
 
+/**
+ * File: FreeType font rendering
+ */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -17,7 +21,6 @@
 
 #include "gd.h"
 #include "gdhelpers.h"
-#include "entities.h"
 #include "gd_intern.h"
 
 /* 2.0.10: WIN32, not MSWIN32 */
@@ -46,7 +49,10 @@
 static char *font_pattern(char **fontpath, char *fontpattern);
 #endif
 
+#ifdef HAVE_LIBFREETYPE
+#include "entities.h"
 static char *font_path(char **fontpath, char *name_list);
+#endif
 
 /* 2.0.30: move these up here so we can build correctly without freetype
 	but with fontconfig */
@@ -92,9 +98,11 @@
 #define TRUE !FALSE
 #endif
 
-/*
-	Function: gdImageStringTTF
-*/
+/**
+ * Function: gdImageStringTTF
+ *
+ * Alias of <gdImageStringFT>.
+ */
 BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
                                       double ptsize, double angle, int x, int y, char *string)
 {
@@ -139,16 +147,6 @@
 }
 #else
 
-#ifndef HAVE_LIBFONTCONFIG
-static char * font_pattern(char **fontpath, char *fontpattern)
-{
-	(void)fontpath;
-	(void)fontpattern;
-
-	return "libgd was not built with FontConfig support\n";
-}
-#endif /* HAVE_LIBFONTCONFIG */
-
 #include "gdcache.h"
 /* 2.0.16 Christophe Thomas: starting with FreeType 2.1.6, this is
   mandatory, and it has been supported for a long while. */
@@ -446,15 +444,15 @@
 	return (strcmp (a->fontlist, b->fontlist) == 0 && a->flags == b->flags);
 }
 
+#ifdef HAVE_LIBFONTCONFIG
 static int useFontConfig(int flag)
 {
-#ifdef HAVE_LIBFONTCONFIG
 	if (fontConfigFlag) {
 		return (!(flag & gdFTEX_FONTPATHNAME));
 	}
-#endif
 	return flag & gdFTEX_FONTCONFIG;
 }
+#endif
 
 static void *
 fontFetch (char **error, void *key)
@@ -768,17 +766,26 @@
 	return (char *) NULL;
 }
 
-/*
-	Function: gdFreeFontCache
-*/
+/**
+ * Function: gdFreeFontCache
+ *
+ * Alias of <gdFontCacheShutdown>.
+ */
 BGD_DECLARE(void) gdFreeFontCache ()
 {
 	gdFontCacheShutdown ();
 }
 
-/*
-	Function: gdFontCacheShutdown
-*/
+/**
+ * Function: gdFontCacheShutdown
+ *
+ * Shut down the font cache and free the allocated resources.
+ *
+ * Important:
+ *  This function has to be called whenever FreeType operations have been
+ *  invoked, to avoid resource leaks. It doesn't harm to call this function
+ *  multiple times.
+ */
 BGD_DECLARE(void) gdFontCacheShutdown ()
 {
 	if (fontCache) {
@@ -792,11 +799,31 @@
 	}
 }
 
-/*
-	Function: gdImageStringFT
-
-	Render a utf8 string onto a gd image.
-*/
+/**
+ * Function: gdImageStringFT
+ *
+ * Render an UTF-8 string onto a gd image.
+ *
+ * Parameters:
+ *	im       - The image to draw onto.
+ *  brect    - The bounding rectangle as array of 8 integers where each pair
+ *             represents the x- and y-coordinate of a point. The points
+ *             specify the lower left, lower right, upper right and upper left
+ *             corner.
+ *	fg       - The font color.
+ *	fontlist - The semicolon delimited list of font filenames to look for.
+ *	ptsize   - The height of the font in typographical points (pt).
+ *	angle    - The angle in radian to rotate the font counter-clockwise.
+ *	x        - The x-coordinate of the basepoint (roughly the lower left corner) of the first letter.
+ *	y        - The y-coordinate of the basepoint (roughly the lower left corner) of the first letter.
+ *	string   - The string to render.
+ *
+ * Variant:
+ *  - <gdImageStringFTEx>
+ *
+ * See also:
+ *  - <gdImageString>
+ */
 BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
                                      double ptsize, double angle, int x, int y, char *string)
 {
@@ -804,9 +831,15 @@
 	                          ptsize, angle, x, y, string, 0);
 }
 
-/*
-	Function: gdFontCacheSetup
-*/
+/**
+ * Function: gdFontCacheSetup
+ *
+ * Set up the font cache.
+ *
+ * This is called automatically from the string rendering functions, if it
+ * has not already been called. So there's no need to call this function
+ * explicitly.
+ */
 BGD_DECLARE(int) gdFontCacheSetup (void)
 {
 	if (fontCache) {
@@ -834,24 +867,27 @@
   If the strex parameter is not null, it must point to a
   gdFTStringExtra structure. As of gd 2.0.5, this structure is defined
   as follows:
+  (start code)
 
-  > typedef struct {
-  >     // logical OR of gdFTEX_ values
-  >     int flags; 
-  > 
-  >     // fine tune line spacing for '\n'
-  >     double linespacing; 
-  > 
-  >     // Preferred character mapping
-  >     int charmap;
-  > 
-  >     // Rendering resolution
-  >     int hdpi;
-  >     int vdpi;
-  >     char *xshow;
-  >     char *fontpath;
-  > } gdFTStringExtra, *gdFTStringExtraPtr;
+  typedef struct {
+      // logical OR of gdFTEX_ values
+      int flags;
+   
+      // fine tune line spacing for '\n'
+      double linespacing;
+   
+      // Preferred character mapping
+      int charmap;
+   
+      // Rendering resolution
+      int hdpi;
+      int vdpi;
+      char *xshow;
+      char *fontpath;
+  } gdFTStringExtra, *gdFTStringExtraPtr;
 
+  (end code)
+
   To output multiline text with a specific line spacing, include
   gdFTEX_LINESPACE in the setting of flags:
 
@@ -919,7 +955,7 @@
   GD 2.0.29 and later can use fontconfig to resolve font names,
   including fontconfig patterns, if the gdFTEX_FONTCONFIG flag is
   set. As a convenience, this behavior can be made the default by
-  calling gdFTUseFontConfig with a nonzero value. In that situation it
+  calling <gdFTUseFontConfig> with a nonzero value. In that situation it
   is not necessary to set the gdFTEX_FONTCONFIG flag on every call;
   however explicit font path names can still be used if the
   gdFTEX_FONTPATHNAME flag is set:
@@ -926,7 +962,7 @@
 
     > flags | gdFTEX_FONTPATHNAME;
 
-  Unless gdFTUseFontConfig has been called with a nonzero value, GD
+  Unless <gdFTUseFontConfig> has been called with a nonzero value, GD
   2.0.29 and later will still expect the fontlist argument to the
   freetype text output functions to be a font file name or list
   thereof as in previous versions. If you do not wish to make
@@ -939,7 +975,7 @@
   GD 2.0.29 and above can use fontconfig to resolve font names,
   including fontconfig patterns, if the gdFTEX_FONTCONFIG flag is
   set. As a convenience, this behavior can be made the default by
-  calling gdFTUseFontConfig with a nonzero value. In that situation it
+  calling <gdFTUseFontConfig> with a nonzero value. In that situation it
   is not necessary to set the gdFTEX_FONTCONFIG flag on every call;
   however explicit font path names can still be used if the
   gdFTEX_FONTPATHNAME flag is set:
@@ -1630,6 +1666,7 @@
 
 #endif /* HAVE_LIBFONTCONFIG */
 
+#ifdef HAVE_LIBFREETYPE
 /* Look up font using font names as file names. */
 static char * font_path(char **fontpath, char *name_list)
 {
@@ -1758,10 +1795,21 @@
 	*fontpath = fullname;
 	return NULL;
 }
+#endif
 
-/*
-	Function: gdFTUseFontConfig
-*/
+/**
+ * Function: gdFTUseFontConfig
+ *
+ * Enable or disable fontconfig by default.
+ *
+ * If GD is built without libfontconfig support, this function is a NOP.
+ *
+ * Parameters:
+ *  flag - Zero to disable, nonzero to enable.
+ *
+ * See also:
+ *  - <gdImageStringFTEx>
+ */
 BGD_DECLARE(int) gdFTUseFontConfig(int flag)
 {
 #ifdef HAVE_LIBFONTCONFIG

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdfx.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdfx.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdfx.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -25,10 +25,39 @@
 #define MAXY(x) MAX4(x[1],x[3],x[5],x[7])
 #define MINY(x) MIN4(x[1],x[3],x[5],x[7])
 
-/*
-	Function: gdImageStringFTCircle
-*/
-BGD_DECLARE(char *)
+/**
+ * Function: gdImageStringFTCircle
+ *
+ * Draw text curved along the top and bottom of a circular area of an image.
+ *
+ * Parameters:
+ *  im          - The image to draw onto.
+ *  cx          - The x-coordinate of the center of the circular area.
+ *  cy          - The y-coordinate of the center of the circular area.
+ *  radius      - The radius of the circular area.
+ *  textRadius  - The height of each character; if textRadius is 1/2 of radius,
+ *	              characters extend halfway from the edge to the center.
+ *  fillPortion - The percentage of the 180 degrees of the circular area
+ *                assigned to each section of text, that is actually occupied
+ *                by text. The value has to be in range 0.0 to 1.0, with useful
+ *                values from about 0.4 to 0.9; 0.9 looks better than 1.0 which
+ *                is rather crowded.
+ *  font        - The fontlist that is passed to <gdImageStringFT>.
+ *  points      - The point size, which functions as a hint. Although the size
+ *                of the text is determined by radius, textRadius and
+ *                fillPortion, a point size that 'hints' appropriately should be
+ *                passed. If it's known that the text will be large, a large
+ *                point size such as 24.0 should be passed to get the best
+ *                results.
+ *  top         - The text to draw clockwise at the top of the circular area.
+ *  bottom      - The text to draw counterclockwise at the bottom of the
+ *                circular area.
+ *  fgcolor     - The font color.
+ *
+ * Returns:
+ *  NULL on success, or an error string on failure.
+ */
+BGD_DECLARE(char*)
 gdImageStringFTCircle (gdImagePtr im,
                        int cx,
                        int cy,
@@ -257,9 +286,21 @@
 #define SUPERBITS1 1
 #define SUPERBITS2 2
 
-/*
-	Function: gdImageSquareToCircle
-*/
+/**
+ * Function: gdImageSquareToCircle
+ *
+ * Apply polar coordinate transformation to an image.
+ *
+ * The X axis of the original will be remapped to theta (angle) and the Y axis
+ * of the original will be remapped to rho (distance from center).
+ *
+ * Parameters:
+ *  im     - The image, which must be square, i.e. width == height.
+ *  radius - The radius of the new image, i.e. width == height == radius * 2.
+ *
+ * Returns:
+ *  The transformed image, or NULL on failure.
+ */
 BGD_DECLARE(gdImagePtr)
 gdImageSquareToCircle (gdImagePtr im, int radius)
 {
@@ -386,19 +427,21 @@
 	return gdTrueColorAlpha ((int) red, (int) green, (int) blue, (int) alpha);
 }
 
-/*
-	Function: gdImageSharpen
-
-	Sharpen function added on 2003-11-19
-	by Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
-	Simple 3x3 convolution kernel
-	Makes use of seperability
-	Faster, but less flexible, than full-blown unsharp masking
-	pct is sharpening percentage, and can be greater than 100
-	Silently does nothing to non-truecolor images
-	Silently does nothing for pct<0, as not a useful blurring function
-	Leaves transparency/alpha-channel untouched
-*/
+/**
+ * Function: gdImageSharpen
+ *
+ * Sharpen an image.
+ *
+ * Uses a simple 3x3 convolution kernel and makes use of separability.
+ * It's faster, but less flexible, than full-blown unsharp masking.
+ * Silently does nothing to non-truecolor images and for pct<0, as it's not a useful blurring function.
+ *
+ * Parameters:
+ *  pct - The sharpening percentage, which can be greater than 100.
+ *
+ * Author:
+ *  Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
+ */
 BGD_DECLARE(void)
 gdImageSharpen (gdImagePtr im, int pct)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdfx.h
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdfx.h	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdfx.h	2017-01-18 23:13:46 UTC (rev 42987)
@@ -5,37 +5,8 @@
 #ifndef GDFX_H
 #define GDFX_H 1
 
-/* im MUST be square, but can have any size. Returns a new image
-	of width and height radius * 2, in which the X axis of
-	the original has been remapped to theta (angle) and the Y axis
-	of the original has been remapped to rho (distance from center).
-	This is known as a "polar coordinate transform." */
-
 BGD_DECLARE(gdImagePtr) gdImageSquareToCircle(gdImagePtr im, int radius);
 
-/* Draws the text 'top' and 'bottom' on 'im', curved along the
-	edge of a circle of radius 'radius', with its
-	center at 'cx' and 'cy'. 'top' is written clockwise
-	along the top; 'bottom' is written counterclockwise
-	along the bottom. 'textRadius' determines the 'height'
-	of each character; if 'textRadius' is 1/2 of 'radius',
-	characters extend halfway from the edge to the center.
-	'fillPortion' varies from 0 to 1.0, with useful values
-	from about 0.4 to 0.9, and determines how much of the
-	180 degrees of arc assigned to each section of text
-	is actually occupied by text; 0.9 looks better than
-	1.0 which is rather crowded. 'font' is a freetype
-	font; see gdImageStringFT. 'points' is passed to the
-	freetype engine and has an effect on hinting; although
-	the size of the text is determined by radius, textRadius,
-	and fillPortion, you should pass a point size that
-	'hints' appropriately -- if you know the text will be
-	large, pass a large point size such as 24.0 to get the
-	best results. 'fgcolor' can be any color, and may have
-	an alpha component, do blending, etc.
-
-	Returns 0 on success, or an error string. */
-
 BGD_DECLARE(char *) gdImageStringFTCircle(
     gdImagePtr im,
     int cx,
@@ -49,18 +20,6 @@
     char *bottom,
     int fgcolor);
 
-/* 2.0.16:
- * Sharpen function added on 2003-11-19
- * by Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
- * Simple 3x3 convolution kernel
- * Makes use of seperability
- * Faster, but less flexible, than full-blown unsharp masking
- * pct is sharpening percentage, and can be greater than 100
- * Silently does nothing to non-truecolor images
- * Silently does nothing for pct<0, as not a useful blurring function
- * Leaves transparency/alpha-channel untouched
- */
-
 BGD_DECLARE(void) gdImageSharpen (gdImagePtr im, int pct);
 
 #endif /* GDFX_H */

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdhelpers.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdhelpers.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdhelpers.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -91,7 +91,24 @@
 }
 
 /*
-	Function: gdFree
+  Function: gdFree
+
+    Frees memory that has been allocated by libgd functions.
+
+	Unless more specialized functions exists (for instance, <gdImageDestroy>),
+	all memory that has been allocated by public libgd functions has to be
+	freed by calling <gdFree>, and not by free(3), because libgd internally
+	doesn't use alloc(3) and friends but rather its own allocation functions,
+	which are, however, not publicly available.
+
+  Parameters:
+
+	ptr - Pointer to the memory space to free. If it is NULL, no operation is
+		  performed.
+
+  Returns:
+
+	Nothing.
 */
 BGD_DECLARE(void) gdFree (void *ptr)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/src/gdxpm.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/src/gdxpm.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/src/gdxpm.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -5,6 +5,14 @@
  * http://www.csn.ul.ie/~caolan
  */
 
+
+/**
+ * File: XPM Input
+ *
+ * Read XPM images.
+ */
+
+
 #ifdef HAVE_CONFIG_H
 #	include "config.h"
 #endif
@@ -52,15 +60,18 @@
     A pointer to the new image or NULL if an error occurred.
 
   Example:
+    (start code)
 
-    > gdImagePtr im;
-    > FILE *in;
-    > in = fopen("myxpm.xpm", "rb");
-    > im = gdImageCreateFromXpm(in);
-    > fclose(in);
-    > // ... Use the image ...
-    > gdImageDestroy(im);
+    gdImagePtr im;
+    FILE *in;
+    in = fopen("myxpm.xpm", "rb");
+    im = gdImageCreateFromXpm(in);
+    fclose(in);
+    // ... Use the image ...
+    gdImageDestroy(im);
 
+    (end code)
+
 */
 BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm(char *filename)
 {

Modified: trunk/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -19,10 +19,14 @@
 
 	SET(TESTS_DIRS
 		bmp
+		fontconfig
 		freetype
 		gd
 		gd2
 		gdimagearc
+		gdimagebrightness
+		gdimageclone
+		gdimagecolor
 		gdimagecolorclosest
 		gdimagecolordeallocate
 		gdimagecolorexact
@@ -29,9 +33,12 @@
 		gdimagecolorreplace
 		gdimagecolorresolve
 		gdimagecolortransparent
+		gdimagecontrast
+		gdimageconvolution
 		gdimagecopy
 		gdimagecopyresampled
 		gdimagecopyrotated
+		gdimagecreate
 		gdimagecrop
 		gdimagefile
 		gdimagefill
@@ -41,7 +48,10 @@
 		gdimagefilledrectangle
 		gdimagefilltoborder
 		gdimagefilter
+		gdimageflip
+		gdimagegrayscale
 		gdimageline
+		gdimagenegate
 		gdimageopenpolygon
 		gdimagepixelate
 		gdimagepolygon

Modified: trunk/Build/source/libs/gd/libgd-src/tests/Makefile.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/Makefile.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/Makefile.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -4,6 +4,7 @@
 	gdtest/gdtest.c \
 	gdtest/gdtest.h \
 	gdhelpers.c
+libgdtest_a_CPPFLAGS = $(AM_CPPFLAGS) -DGDTEST_TOP_DIR='"$(srcdir)"'
 
 # Setup vars that subdirs will increment.
 libgd_test_programs =
@@ -13,10 +14,14 @@
 TESTS =
 
 include bmp/Makemodule.am
+include fontconfig/Makemodule.am
 include freetype/Makemodule.am
 include gd/Makemodule.am
 include gd2/Makemodule.am
 include gdimagearc/Makemodule.am
+include gdimagebrightness/Makemodule.am
+include gdimageclone/Makemodule.am
+include gdimagecolor/Makemodule.am
 include gdimagecolorclosest/Makemodule.am
 include gdimagecolordeallocate/Makemodule.am
 include gdimagecolorexact/Makemodule.am
@@ -23,9 +28,12 @@
 include gdimagecolorreplace/Makemodule.am
 include gdimagecolorresolve/Makemodule.am
 include gdimagecolortransparent/Makemodule.am
+include gdimagecontrast/Makemodule.am
+include gdimageconvolution/Makemodule.am
 include gdimagecopy/Makemodule.am
 include gdimagecopyresampled/Makemodule.am
 include gdimagecopyrotated/Makemodule.am
+include gdimagecreate/Makemodule.am
 include gdimagecrop/Makemodule.am
 include gdimagefile/Makemodule.am
 include gdimagefill/Makemodule.am
@@ -35,7 +43,10 @@
 include gdimagefilledrectangle/Makemodule.am
 include gdimagefilltoborder/Makemodule.am
 include gdimagefilter/Makemodule.am
+include gdimageflip/Makemodule.am
+include gdimagegrayscale/Makemodule.am
 include gdimageline/Makemodule.am
+include gdimagenegate/Makemodule.am
 include gdimageopenpolygon/Makemodule.am
 include gdimagepixelate/Makemodule.am
 include gdimagepolygon/Makemodule.am
@@ -63,7 +74,7 @@
 include xpm/Makemodule.am
 
 LDADD = libgdtest.a ../src/libgd.la
-AM_CPPFLAGS = -I$(top_srcdir)/src -I $(top_srcdir)/tests/gdtest
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/tests/gdtest
 
 check_PROGRAMS = $(libgd_test_programs) $(libgd_helper_programs)
 TESTS += $(libgd_test_programs)

Modified: trunk/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,8 @@
 SET(TESTS_FILES
 	bmp_im2im
 	bmp_null
+	bug00275
+	bug00276
 )
 
 ADD_GD_TESTS()

Modified: trunk/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,5 +1,7 @@
 libgd_test_programs += \
-	bmp/bmp_null
+	bmp/bmp_null \
+	bmp/bug00275 \
+	bmp/bug00276
 
 if HAVE_LIBPNG
 libgd_test_programs += \

Added: trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,53 @@
+/* See <https://github.com/libgd/libgd/issues/275>. */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+#ifdef __GNUC__
+#define UNUSED __attribute__((unused))
+#else
+#define UNUSED
+#endif
+
+
+/* define callbacks for a non-seekable fake IO context */
+
+static void fakePutC(UNUSED gdIOCtx *ctx, UNUSED int c)
+{
+	// do nothing
+}
+
+static int fakePutBuf(UNUSED gdIOCtx *ctx, UNUSED const void *data, int wanted)
+{
+	return wanted;
+}
+
+
+int main()
+{
+	gdImagePtr im;
+	int white;
+	gdIOCtx ctx;
+
+	/* initialize the fake IO context */
+	ctx.getC = NULL;
+	ctx.getBuf = NULL;
+	ctx.putC = fakePutC;
+	ctx.putBuf = fakePutBuf;
+	ctx.seek = NULL;
+	ctx.tell = NULL;
+	ctx.gd_free = NULL;
+
+	/* create an image */
+	im = gdImageCreate(10, 10);
+	gdImageColorAllocate(im, 0, 0, 0);
+	white = gdImageColorAllocate(im, 255, 255, 255);
+	gdImageLine(im, 2,2, 7,7, white);
+
+	/* "save" the image as BMP */
+	gdImageBmpCtx(im, &ctx, 2);
+
+	return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,32 @@
+/* See <https://github.com/libgd/libgd/issues/276> */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+	gdImagePtr im_orig, im_saved;
+	int white;
+	void *data;
+	int size;
+
+	/* create an image */
+	im_orig = gdImageCreate(10, 10);
+	gdImageColorAllocate(im_orig, 0, 0, 0);
+	white = gdImageColorAllocate(im_orig, 255, 255, 255);
+	gdImageLine(im_orig, 0,0, 9,9, white);
+
+	/* save the image, re-read it and compare it with the original */
+	data = gdImageBmpPtr(im_orig, &size, 1);
+	im_saved = gdImageCreateFromBmpPtr(size, data);
+	gdTestAssert(im_saved != NULL);
+	gdAssertImageEquals(im_orig, im_saved);
+
+	/* clean up */
+	gdImageDestroy(im_orig);
+	gdImageDestroy(im_saved);
+
+	return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,7 @@
+IF(FREETYPE_FOUND AND FONTCONFIG_FOUND)
+LIST(APPEND TESTS_FILES
+    basic
+)
+ENDIF(FREETYPE_FOUND AND FONTCONFIG_FOUND)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,9 @@
+if HAVE_LIBFONTCONFIG
+if HAVE_LIBFREETYPE
+libgd_test_programs += \
+	fontconfig/basic
+endif
+endif
+
+EXTRA_DIST += \
+	fontconfig/CMakeLists.txt

Added: trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/basic.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/basic.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/basic.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,33 @@
+/**
+ * A most basic test for fontconfig support.
+ *
+ * Without actually using fontconfig, passing an empty fontlist to
+ * gdImageStringFT() would return an error ("Could not find/open font").
+ * We're checking that it returns NULL.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    int black;
+    char *error;
+
+    im = gdImageCreate(100, 100);
+    gdTestAssert(im != NULL);
+    gdImageColorAllocate(im, 255, 255, 255);
+    black = gdImageColorAllocate(im, 0, 0, 0);
+
+    gdTestAssert(gdFTUseFontConfig(1));
+    error = gdImageStringFT(im, NULL, black, "", 14.0, 0.0, 10, 20, "foo");
+    gdTestAssertMsg(error == NULL, "%s", error);
+
+    gdImageDestroy(im);
+    gdFontCacheShutdown();
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/fontconfig/basic.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,6 @@
 IF(FREETYPE_FOUND)
 SET(TESTS_FILES
-#	bug00132
+	bug00132
 )
 ENDIF(FREETYPE_FOUND)
 

Modified: trunk/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -34,5 +34,6 @@
 		}
 	}
 	gdImageDestroy(im);
+	gdFontCacheShutdown();
 	return error;
 }

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,8 +1,12 @@
 SET(TESTS_FILES
+	bug_289
+	bug00309
+	bug00354
 	gd2_empty_file
 	gd2_im2im
 	gd2_null
 	php_bug_72339
+	too_few_image_data
 )
 
 ADD_GD_TESTS()

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,7 +1,11 @@
 libgd_test_programs += \
+	gd2/bug_289 \
+	gd2/bug00309 \
+	gd2/bug00354 \
 	gd2/gd2_empty_file \
 	gd2/php_bug_72339 \
-	gd2/gd2_read_corrupt
+	gd2/gd2_read_corrupt \
+	gd2/too_few_image_data
 
 if HAVE_LIBZ
 libgd_test_programs += \
@@ -16,6 +20,8 @@
 
 EXTRA_DIST += \
 	gd2/CMakeLists.txt \
+	gd2/bug00354a.gd2 \
+	gd2/bug00354b.gd2 \
 	gd2/conv_gd2_exp.gd2 \
 	gd2/conv_test.gd2 \
 	gd2/conv_test_exp.png \
@@ -22,4 +28,4 @@
 	gd2/empty.gd2 \
 	gd2/invalid_header.gd2 \
 	gd2/invalid_neg_size.gd2 \
-	gd2/php_bug_72339_exp.gd2
+	gd2/too_few_image_data.gd2

Added: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00309.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00309.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00309.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,37 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/309>.
+ *
+ * We test that an image with 64x64 pixels reports only a single chunk in the
+ * GD2 image header when the chunk size is 64.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    unsigned char *buf;
+    int size, word;
+
+    im = gdImageCreate(64, 64);
+    gdImageColorAllocate(im, 0, 0, 0);
+
+    buf = gdImageGd2Ptr(im, 64, 1, &size);
+
+    gdImageDestroy(im);
+
+    word = buf[10] << 8 | buf[11];
+    gdTestAssertMsg(word == 64, "chunk size is %d, but expected 64\n", word);
+    word = buf[14] << 8 | buf[15];
+    gdTestAssertMsg(word == 1, "x chunk count is %d, but expected 1\n", word);
+    word = buf[16] << 8 | buf[17];
+    gdTestAssertMsg(word == 1, "y chunk count is %d, but expected 1\n", word);
+    gdTestAssertMsg(size == 5145, "file size is %d, but expected 5145\n", size);
+
+    gdFree(buf);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00309.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,32 @@
+/**
+ * We're testing GD2 image files which report illegal chunk counts. These should
+ * not cause integer overflows or other issues, but instead simply fail to be
+ * loaded.
+ *
+ * See also <https://github.com/libgd/libgd/issues/354>.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    FILE *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);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354a.gd2
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354a.gd2
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354a.gd2	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354a.gd2	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354a.gd2
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354b.gd2
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354b.gd2
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354b.gd2	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354b.gd2	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug00354b.gd2
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,33 @@
+/**
+ * Passing an unrecognized format to gdImageGd2() should result in
+ * GD2_FMT_TRUECOLOR_COMPRESSED for truecolor images.
+ *
+ * See <https://github.com/libgd/libgd/issues/289>.
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+#define GD2_FMT_UNRECOGNIZED 0
+#define GD2_FMT_TRUECOLOR_COMPRESSED 4
+
+#define MSG "expected %s byte to be %d, but got %d\n"
+
+
+int main()
+{
+    gdImagePtr im;
+    char *buffer;
+    int size;
+
+    im = gdImageCreateTrueColor(10, 10);
+    gdTestAssert(im != NULL);
+    buffer = (char *) gdImageGd2Ptr(im, 128, GD2_FMT_UNRECOGNIZED, &size);
+    gdTestAssert(buffer != NULL);
+    gdImageDestroy(im);
+    gdTestAssertMsg(buffer[12] == 0, MSG, "1st", 0, buffer[12]);
+    gdTestAssertMsg(buffer[13] == GD2_FMT_TRUECOLOR_COMPRESSED, MSG, "2nd", GD2_FMT_TRUECOLOR_COMPRESSED, buffer[13]);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -8,14 +8,29 @@
 {
 	gdImagePtr im;
 	FILE *fp;
-	
-	fp = gdTestFileOpen2("gd2", "php_bug_72339_exp.gd2");
-	im = gdImageCreateFromGd2(fp);
-	if (im == NULL) {
-		return 0;
-	} else {
-		gdTestErrorMsg("Image should have failed to be loaded");
-		return 1;
+	int i;
+	const char header[] = {
+		0x00, 0x02,
+		0x00, 0x01,
+		0x00, 0x01,
+		0x00, 0x40,
+		0x00, 0x02,
+		0x54, 0xA0,
+		0x5B, 0x00
+	};
+
+	/* we're creating the test image dynamically, due to its size */
+	fp = gdTestTempFp();
+	fwrite(header, sizeof(header[0]), sizeof(header), fp);
+	for (i = 0; i < 0x4000000; i++) {
+		fputc(0x41, fp);
 	}
+	rewind(fp);
 
+	im = gdImageCreateFromGd2(fp);
+	fclose(fp);
+	
+	gdTestAssertMsg(im == NULL, "Image should have failed to be loaded\n");
+
+	return gdNumFailures();
 }

Deleted: trunk/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2
===================================================================
(Binary files differ)

Added: trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,22 @@
+/*
+too_few_image_data.gd2 claims to have a size of 12336x48 pixels, but doesn't
+provide as much image data. We test that gdImageCreateFromGd2Ctx() returns NULL
+in this case.
+*/
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+    gdImagePtr im;
+    FILE *fp;
+
+    fp = gdTestFileOpen2("gd2", "too_few_image_data.gd2");
+    gdTestAssert(fp != NULL);
+    im = gdImageCreateFromGd2(fp);
+    gdTestAssert(im == NULL);
+    fclose(fp);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.gd2
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.gd2
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.gd2	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.gd2	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gd2/too_few_image_data.gd2
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	basic
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,10 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+	gdimagebrightness/basic
+endif
+
+EXTRA_DIST += \
+	gdimagebrightness/CMakeLists.txt \
+	gdimagebrightness/basic.png \
+	gdimagebrightness/basic+100.png \
+	gdimagebrightness/basic-100.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic+100.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic+100.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic+100.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic+100.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic+100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic-100.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic-100.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic-100.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic-100.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic-100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,41 @@
+/**
+ * Basic test for gdImageBrightness()
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+static void test_brightness(int brightness);
+
+
+int main()
+{
+    test_brightness(+100);
+    test_brightness(-100);
+
+    return gdNumFailures();
+}
+
+
+static void test_brightness(int brightness)
+{
+    gdImagePtr im;
+    FILE *fp;
+    char basename[256];
+    char *path;
+
+    fp = gdTestFileOpen2("gdimagebrightness", "basic.png");
+    im = gdImageCreateFromPng(fp);
+    fclose(fp);
+
+    gdImageBrightness(im, brightness);
+
+    sprintf(basename, "basic%+03d.png", brightness);
+    path = gdTestFilePath2("gdimagebrightness", basename);
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	bug00300
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+	gdimageclone/bug00300
+
+EXTRA_DIST += \
+	gdimageclone/CMakeLists.txt

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/bug00300.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/bug00300.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/bug00300.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,32 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/300>
+ *
+ * We're testing that the resolution does not change when cloning.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im, clone;
+
+    im = gdImageCreate(8, 8);
+    gdImageSetResolution(im, 100, 50);
+
+    clone = gdImageClone(im);
+
+    gdTestAssertMsg(gdImageResolutionX(clone) == gdImageResolutionX(im),
+                    "horizontal resolution doesn't match: expected %d, got %d\n",
+                    gdImageResolutionX(im), gdImageResolutionX(clone));
+    gdTestAssertMsg(gdImageResolutionY(clone) == gdImageResolutionY(im),
+                    "vertical resolution doesn't match: expected %d, got %d\n",
+                    gdImageResolutionY(im), gdImageResolutionY(clone));
+
+    gdImageDestroy(clone);
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageclone/bug00300.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	basic
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,9 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+	gdimagecolor/basic
+endif
+
+EXTRA_DIST += \
+	gdimagecolor/CMakeLists.txt \
+	gdimagecolor/basic.png \
+	gdimagecolor/basic_exp.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,29 @@
+/**
+ * Basic test for gdImageColor()
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    FILE *fp;
+    char *path;
+
+    fp = gdTestFileOpen2("gdimagecolor", "basic.png");
+    im = gdImageCreateFromPng(fp);
+    fclose(fp);
+
+    gdImageColor(im, 127, -127, -127, 0);
+
+    path = gdTestFilePath2("gdimagecolor", "basic_exp.png");
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	basic
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,10 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+	gdimagecontrast/basic
+endif
+
+EXTRA_DIST += \
+	gdimagecontrast/CMakeLists.txt \
+	gdimagecontrast/basic.png \
+	gdimagecontrast/basic+50.png \
+	gdimagecontrast/basic-50.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic+50.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic+50.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic+50.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic+50.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic+50.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic-50.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic-50.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic-50.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic-50.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic-50.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,41 @@
+/**
+ * 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);
+
+    return gdNumFailures();
+}
+
+
+static void test_contrast(double contrast)
+{
+    gdImagePtr im;
+    FILE *fp;
+    char basename[256];
+    char *path;
+
+    fp = gdTestFileOpen2("gdimagecontrast", "basic.png");
+    im = gdImageCreateFromPng(fp);
+    fclose(fp);
+
+    gdImageContrast(im, contrast);
+
+    sprintf(basename, "basic%+03.0f.png", contrast);
+    path = gdTestFilePath2("gdimagecontrast", basename);
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	basic
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,12 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+	gdimageconvolution/basic
+endif
+
+EXTRA_DIST += \
+	gdimageconvolution/CMakeLists.txt \
+	gdimageconvolution/basic.png \
+	gdimageconvolution/basic_edge_detect_quick.png \
+	gdimageconvolution/basic_emboss.png \
+	gdimageconvolution/basic_mean_removal.png \
+	gdimageconvolution/basic_smooth.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,62 @@
+/**
+ * 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;
+
+    fp = gdTestFileOpen2("gdimageconvolution", "basic.png");
+    im = gdImageCreateFromPng(fp);
+    fclose(fp);
+
+    convolution_func(im);
+
+    path = gdTestFilePath2("gdimageconvolution", expected);
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+}
+
+
+static void test_edge_detect_quick(gdImagePtr im)
+{
+    gdImageEdgeDetectQuick(im);
+}
+
+
+static void test_smooth(gdImagePtr im)
+{
+    gdImageSmooth(im, 5);
+}
+
+
+static void test_emboss(gdImagePtr im)
+{
+    gdImageEmboss(im);
+}
+
+
+static void test_mean_removal(gdImagePtr 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");
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_edge_detect_quick.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_edge_detect_quick.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_edge_detect_quick.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_edge_detect_quick.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_edge_detect_quick.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_emboss.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_emboss.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_emboss.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_emboss.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_emboss.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_mean_removal.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_mean_removal.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_mean_removal.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_mean_removal.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_mean_removal.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_smooth.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_smooth.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_smooth.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_smooth.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic_smooth.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -7,7 +7,6 @@
 {
 	gdImagePtr im, im2;
 	int error = 0;
-	char *path;
 
 	im = gdImageCreateTrueColor(width, width);
 	gdImageFilledRectangle(im, 0,0, width, width, 0xFF0000);
@@ -18,13 +17,11 @@
 	im2 = gdImageCreateTrueColor(width, width);
 
 	gdImageCopyRotated(im2, im, width / 2, width / 2, 0,0, width, width, 60);
-	path = gdTestFilePath2("gdimagecopyrotated", "bug00020_exp.png");
-	if (!gdAssertImageEqualsToFile(path, im2)) {
+	if (!gdAssertImageEqualsToFile("gdimagecopyrotated/bug00020_exp.png", im2)) {
 		error = 1;
 	}
 
 	gdImageDestroy(im2);
 	gdImageDestroy(im);
-	free(path);
 	return error;
 }

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+SET(TESTS_FILES
+	bug00340
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+libgd_test_programs += \
+	gdimagecreate/bug00340
+
+EXTRA_DIST += \
+	gdimagecreate/CMakeLists.txt

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,33 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/340>
+ *
+ * We're testing that trying to create an oversized image fails early,
+ * 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));
+}
+
+
+int main()
+{
+    gdImagePtr im;
+
+    im = gdImageCreate(64970, 65111);
+    gdTestAssert(im == NULL);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,5 @@
 SET(TESTS_FILES
+	bug00297
 	php_bug_72494
 )
 

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,5 @@
 libgd_test_programs += \
+	gdimagecrop/bug00297 \
 	gdimagecrop/php_bug_72494
 
 EXTRA_DIST += \

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00297.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00297.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00297.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,28 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/297>.
+ *
+ * We're testing that the result of gdImageCrop() is a palette image,
+ * if the source was also a palette image.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr src, dst;
+    gdRect rect = {0, 0, 8, 8};
+
+    src = gdImageCreate(8, 8);
+    dst = gdImageCrop(src, &rect);
+
+    gdTestAssert(!gdImageTrueColor(src));
+    gdTestAssert(!gdImageTrueColor(dst));
+
+    gdImageDestroy(dst);
+    gdImageDestroy(src);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00297.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -4,7 +4,6 @@
 
 #include "gd.h"
 #include "gdtest.h"
-#include "test_config.h"
 
 #define WIDTH 60
 #define HEIGHT 50
@@ -50,8 +49,8 @@
 void
 do_test() {
 
-    gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n",1);
-    gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n",1);
+    gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n");
+    gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n");
     
     int n;
     struct {

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -5,6 +5,7 @@
 	gdimagefilledpolygon3
 	bug00100
 	php_bug_64641
+	self_intersecting
 )
 
 ADD_GD_TESTS()

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -5,7 +5,8 @@
 	gdimagefilledpolygon/gdimagefilledpolygon1 \
 	gdimagefilledpolygon/gdimagefilledpolygon2 \
 	gdimagefilledpolygon/gdimagefilledpolygon3 \
-	gdimagefilledpolygon/php_bug_64641
+	gdimagefilledpolygon/php_bug_64641 \
+	gdimagefilledpolygon/self_intersecting
 endif
 
 EXTRA_DIST += \
@@ -15,4 +16,5 @@
 	gdimagefilledpolygon/gdimagefilledpolygon1.png \
 	gdimagefilledpolygon/gdimagefilledpolygon2.png \
 	gdimagefilledpolygon/gdimagefilledpolygon3.png \
-	gdimagefilledpolygon/php_bug_64641.png
+	gdimagefilledpolygon/php_bug_64641.png \
+	gdimagefilledpolygon/self_intersecting_exp.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,31 @@
+/**
+ * We're testing the filling behavior of self-intersecting polygons, which is
+ * *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;
+
+    im = gdImageCreate(100, 100);
+    gdImageColorAllocate(im, 255, 255, 255);
+    black = gdImageColorAllocate(im, 0, 0, 0);
+
+    gdImageFilledPolygon(im, points, 5, black);
+
+    path = gdTestFilePath2("gdimagefilledpolygon", "self_intersecting_exp.png");
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	gdimageflip
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,11 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+	gdimageflip/gdimageflip
+endif
+
+EXTRA_DIST += \
+	gdimageflip/CMakeLists.txt \
+	gdimageflip/remi.png \
+	gdimageflip/gdimageflipvertical_exp.png \
+	gdimageflip/gdimagefliphorizontal_exp.png \
+	gdimageflip/gdimageflipboth_exp.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,37 @@
+/**
+ * Testing the basic operation of the gdImageFlip*() functions
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+static void test_flip(void (*func)(gdImagePtr), const char *filename)
+{
+    gdImagePtr im;
+    FILE *fp;
+    char *path;
+
+    fp = gdTestFileOpen2("gdimageflip", "remi.png");
+    im = gdImageCreateFromPng(fp);
+    fclose(fp);
+
+    func(im);
+
+    path = gdTestFilePath2("gdimageflip", filename);
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+}
+
+
+int main()
+{
+    test_flip(gdImageFlipVertical, "gdimageflipvertical_exp.png");
+    test_flip(gdImageFlipHorizontal, "gdimagefliphorizontal_exp.png");
+    test_flip(gdImageFlipBoth, "gdimageflipboth_exp.png");
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipboth_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipboth_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipboth_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipboth_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipboth_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimagefliphorizontal_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimagefliphorizontal_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimagefliphorizontal_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimagefliphorizontal_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimagefliphorizontal_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipvertical_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipvertical_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipvertical_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipvertical_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflipvertical_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/remi.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/remi.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/remi.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/remi.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimageflip/remi.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	basic
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,9 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+	gdimagegrayscale/basic
+endif
+
+EXTRA_DIST += \
+	gdimagegrayscale/CMakeLists.txt \
+	gdimagegrayscale/basic.png \
+	gdimagegrayscale/basic_exp.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,29 @@
+/**
+ * Basic test for gdImageGrayScale()
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    FILE *fp;
+    char *path;
+
+    fp = gdTestFileOpen2("gdimagegrayscale", "basic.png");
+    im = gdImageCreateFromPng(fp);
+    fclose(fp);
+
+    gdImageGrayScale(im);
+
+    path = gdTestFilePath2("gdimagegrayscale", "basic_exp.png");
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,8 @@
 SET(TESTS_FILES
 	gdimageline_aa
 	gdimageline_aa_outofrange
+	gdImageAALine_thickness
+	github_bug_167
 	bug00077
 	bug00072
 	bug00111

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,5 @@
+LIST(APPEND TESTS_FILES
+	basic
+)
+
+ADD_GD_TESTS()


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/Makemodule.am	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,9 @@
+if HAVE_LIBPNG
+libgd_test_programs += \
+	gdimagenegate/basic
+endif
+
+EXTRA_DIST += \
+	gdimagenegate/CMakeLists.txt \
+	gdimagenegate/basic.png \
+	gdimagenegate/basic_exp.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,29 @@
+/**
+ * Basic test for gdImageNegate()
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    FILE *fp;
+    char *path;
+
+    fp = gdTestFileOpen2("gdimagenegate", "basic.png");
+    im = gdImageCreateFromPng(fp);
+    fclose(fp);
+
+    gdImageNegate(im);
+
+    path = gdTestFilePath2("gdimagenegate", "basic_exp.png");
+    gdAssertImageEqualsToFile(path, im);
+    gdFree(path);
+
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,7 +1,9 @@
 SET(TESTS_FILES
 	bug00003
 	bug00106_gdimagerectangle
+	bug00299
 	github_bug_00172
+	point_ordering
 )
 
 ADD_GD_TESTS()

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,7 +1,10 @@
 libgd_test_programs += \
 	gdimagerectangle/bug00003 \
 	gdimagerectangle/bug00106_gdimagerectangle \
-	gdimagerectangle/github_bug_00172
+	gdimagerectangle/bug00299 \
+	gdimagerectangle/github_bug_00172 \
+	gdimagerectangle/point_ordering
 
 EXTRA_DIST += \
-	gdimagerectangle/CMakeLists.txt
+	gdimagerectangle/CMakeLists.txt \
+	gdimagerectangle/bug00299_exp.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,32 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/299>
+ *
+ * We test that thick rectangles are drawn as desired.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    int black;
+
+    im = gdImageCreate(70, 70);
+    gdImageColorAllocate(im, 255, 255, 255);
+    black = gdImageColorAllocate(im, 0, 0, 0);
+    gdImageSetThickness(im, 4);
+
+    gdImageRectangle(im, 10,10, 50,50, black);
+    gdImageRectangle(im, 10,60, 50,60, black);
+    gdImageRectangle(im, 60,10, 60,50, black);
+    gdImageRectangle(im, 60,60, 60,60, black);
+
+    gdAssertImageEqualsToFile("gdimagerectangle/bug00299_exp.png", im);
+
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/bug00299_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,76 @@
+/**
+ * Test point ordering of gdImageRectangle()
+ *
+ * We're testing the two allowed 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>
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+static void draw_and_check_rectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int black, int red);
+static void draw_and_check_pixel(gdImagePtr im, int x, int y, int black, int red);
+
+
+int main()
+{
+    gdImagePtr im;
+    int black, red;
+
+    im = gdImageCreate(110, 210);
+    gdImageColorAllocate(im, 255, 255, 255);
+    black = gdImageColorAllocate(im,   0,   0,   0);
+    red   = gdImageColorAllocate(im, 255,   0,   0);
+
+    draw_and_check_rectangle(im,  10,  10,  50,  50, black, red);
+    draw_and_check_rectangle(im,  50, 150,  10, 110, black, red);
+    gdImageSetThickness(im, 4);
+    draw_and_check_rectangle(im,  60,  10, 100,  50, black, red);
+    draw_and_check_rectangle(im, 100, 150,  60, 110, black, red);
+
+#if 0
+    /* save image for debugging purposes */
+    do {
+        char *path;
+        FILE *fp;
+
+        path = gdTestFilePath2("gdimagerectangle", "point_ordering.png");
+        fp = fopen(path, "wb");
+        gdImagePng(im, fp);
+        fclose(fp);
+        gdFree(path);
+    } while(0);
+#endif
+
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}
+
+
+static void draw_and_check_rectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int black, int red)
+{
+    int x, y;
+
+    gdImageRectangle(im, x1, y1, x2, y2, black);
+    x = (x1 + x2) / 2;
+    y = (y1 + y2) / 2;
+    draw_and_check_pixel(im, x,  y1, black, red);
+    draw_and_check_pixel(im, x1, y,  black, red);
+    draw_and_check_pixel(im, x,  y2, black, red);
+    draw_and_check_pixel(im, x2, y,  black, red);
+}
+
+
+static void draw_and_check_pixel(gdImagePtr im, int x, int y, int black, int red)
+{
+    int color;
+
+    color = gdImagePalettePixel(im, x, y);
+    gdTestAssertMsg(color == black, "expected color %d, but got color %d\n", black, color);
+    gdImageSetPixel(im, x, y, red);
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,7 @@
 SET(TESTS_FILES
 	bug00067
 	php_bug_64898
+	php_bug_65070
 )
 
 ADD_GD_TESTS()

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -5,7 +5,8 @@
 
 if HAVE_LIBPNG
 libgd_test_programs += \
-	gdimagerotate/php_bug_64898
+	gdimagerotate/php_bug_64898 \
+	gdimagerotate/php_bug_65070
 endif
 
 EXTRA_DIST += \
@@ -25,4 +26,6 @@
 	gdimagerotate/bug00067_180_exp.png \
 	gdimagerotate/php_bug_64898.png \
 	gdimagerotate/php_bug_64898_exp.png \
+	gdimagerotate/php_bug_65070.gif \
+	gdimagerotate/php_bug_65070_exp.png \
 	gdimagerotate/remirh128.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,35 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/319>
+ *
+ * We're testing that the rotated image actually has the requested background
+ * color.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+	gdImagePtr src, dst;
+	FILE *fp;
+	int black;
+	char *path;
+
+	fp = gdTestFileOpen2("gdimagerotate", "php_bug_65070.gif");
+	src = gdImageCreateFromGif(fp);
+	fclose(fp);
+
+	black = gdImageColorAllocateAlpha(src, 0, 0, 0, 0);
+	dst = gdImageRotateInterpolated(src, 30.0, black);
+
+	path = gdTestFilePath2("gdimagerotate", "php_bug_65070_exp.png");
+	gdAssertImageEqualsToFile(path, dst);
+	gdFree(path);
+
+	gdImageDestroy(src);
+	gdImageDestroy(dst);
+
+	return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.gif
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.gif
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.gif	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.gif	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,6 @@
 SET(TESTS_FILES
+	bug00329
+	bug00330
 	github_bug_00218
 	bug_overflow_large_new_size
 )

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,5 +1,7 @@
 
 libgd_test_programs += \
+	gdimagescale/bug00329 \
+	gdimagescale/bug00330 \
 	gdimagescale/github_bug_00218 \
 	gdimagescale/bug_overflow_large_new_size
 

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,53 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/329>
+ *
+ * We're testing that for truecolor as well as palette images after
+ * GD_BILINEAR_FIXED scaling the corner pixels of the scaled image have the
+ * 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);
+}
+
+
+int main()
+{
+    test("palette");
+    test("truecolor");
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,32 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/330>.
+ *
+ * We're testing that after scaling a palette image, the center pixel actually
+ * has the expected color value.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr src, dst;
+    int color;
+
+    src = gdImageCreate(100, 100);
+    gdImageColorAllocate(src, 255, 255, 255);
+
+    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);
+
+    gdImageDestroy(src);
+    gdImageDestroy(dst);
+
+    return 0;
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,5 @@
 SET(TESTS_FILES
+	alpha_blending
 	bug00186
 	gdeffectoverlay
 	gdeffectmultiply

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,7 +1,9 @@
 libgd_test_programs += \
+	gdimagesetpixel/alpha_blending \
 	gdimagesetpixel/bug00186 \
 	gdimagesetpixel/gdeffectmultiply \
 	gdimagesetpixel/gdeffectoverlay
 
 EXTRA_DIST += \
-	gdimagesetpixel/CMakeLists.txt
+	gdimagesetpixel/CMakeLists.txt \
+	gdimagesetpixel/alphablending_exp.png

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,54 @@
+/**
+ * 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();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alphablending_exp.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alphablending_exp.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alphablending_exp.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alphablending_exp.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alphablending_exp.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -73,6 +73,7 @@
 	fclose(fp);
 done:
 	gdImageDestroy(im);
+	gdFontCacheShutdown();
 	free(path);
 	return error;
 }

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -18,6 +18,7 @@
 		return 2;
 	}
 	gdFree(strex.fontpath);
+	gdFontCacheShutdown();
 	free(path);
 	return 0;
 }

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,5 +1,12 @@
 SET(TESTS_FILES
+	bug00307
 	php_bug_72512
 )
 
+IF(JPEG_FOUND)
+LIST(APPEND TESTS_FILES
+	php_bug_67325
+)
+ENDIF(JPEG_FOUND)
+
 ADD_GD_TESTS()

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,13 @@
 
 libgd_test_programs += \
+	gdimagetruecolortopalette/bug00307 \
 	gdimagetruecolortopalette/php_bug_72512
 
+if HAVE_LIBJPEG
+libgd_test_programs += \
+	gdimagetruecolortopalette/php_bug_67325
+endif
+
 EXTRA_DIST += \
-	gdimagetruecolortopalette/CMakeLists.txt
+	gdimagetruecolortopalette/CMakeLists.txt \
+	gdimagetruecolortopalette/php_bug_67325.jpeg

Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,26 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/307>
+ *
+ * We're testing that an image that has been converted to palette with
+ * GD_QUANT_NEUQUANT has its trueColor flag unset.
+ */
+
+ 
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+	gdImagePtr im;
+
+	im = gdImageCreateTrueColor(100, 100);
+
+	gdTestAssert(gdImageTrueColorToPaletteSetMethod(im, GD_QUANT_NEUQUANT, 0));
+	gdImageTrueColorToPalette(im, 0, 256);
+	gdTestAssert(!gdImageTrueColor(im));
+
+	gdImageDestroy(im);
+
+	return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,38 @@
+/**
+ * Regression test for <https://bugs.php.net/bug.php?id=67325>
+ *
+ * We convert a truecolor image to a palette image and check that no duplicated
+ * white colors are in the resulting palette.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im;
+    FILE *fp;
+    int i, white;
+
+    fp = gdTestFileOpen2("gdimagetruecolortopalette", "php_bug_67325.jpeg");
+    gdTestAssert(fp != NULL);
+    im = gdImageCreateFromJpeg(fp);
+    gdTestAssert(im != NULL);
+    gdTestAssert(!fclose(fp));
+
+    gdTestAssert(gdImageTrueColorToPalette(im, 0, 256));
+
+    white = 0;
+    for (i = 0; i < im->colorsTotal; i++) {
+        if (im->red[i] == 255 && im->green[i] == 255 && im->blue[i] == 255) {
+            white++;
+        }
+    }
+    gdTestAssertMsg(white <= 1, "At most one white color palette entry expected, got %d\n", white);
+
+    gdImageDestroy(im);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.jpeg
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.jpeg
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.jpeg	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.jpeg	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_67325.jpeg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -12,7 +12,7 @@
 	im = gdImageCreateTrueColor(100, 100);
 
 	if (im == NULL) {
-		gdTestErrorMsg("gdImageCreateTruecolor failed");
+		gdTestErrorMsg("gdImageCreateTruecolor failed\n");
 		error = 1;
 		goto exit;
 	}

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdtest/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdtest/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdtest/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +1,3 @@
-SET(GDTEST_TOP_DIR "${GD_SOURCE_DIR}/tests")
-CONFIGURE_FILE(test_config.h.cmake test_config.h ESCAPE_QUOTES)
+add_definitions(-DGDTEST_TOP_DIR="${CMAKE_CURRENT_SOURCE_DIR}/..")
 add_library (gdTest STATIC gdtest.c)
 target_link_libraries(gdTest ${GD_LIB})

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,5 +1,4 @@
 # Note: Library is declared in tests/Makefile.am as it's used by all the tests.
 
 EXTRA_DIST += \
-	gdtest/CMakeLists.txt \
-	gdtest/test_config.h.cmake
+	gdtest/CMakeLists.txt

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -27,7 +27,6 @@
 #include "gd.h"
 
 #include "gdtest.h"
-#include "test_config.h"
 
 /* max is already defined in windows/msvc */
 #ifndef max
@@ -47,7 +46,7 @@
 	FILE *fp;
 
 	/* If the path is relative, then assume it's in the tests/ dir. */
-	if (filename[0] == '/' 
+	if (filename[0] == '/' || filename[0] == '.'
 #ifdef _WIN32
 	|| filename[1] == ':'
 #endif
@@ -590,7 +589,7 @@
 	expected = gdTestImageFromPng(expected_file);
 
 	if (!expected) {
-		_gdTestErrorMsg(file, line, "Cannot open PNG <%s>", expected_file);
+		_gdTestErrorMsg(file, line, "Cannot open PNG <%s>\n", expected_file);
 		res = 0;
 	} else {
 		res = gdTestImageCompareToImage(file, line, message, expected, actual);

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h	2017-01-18 23:13:46 UTC (rev 42987)
@@ -2,7 +2,6 @@
 #define GD_TEST_H
 
 #include <stdarg.h>
-#include "test_config.h"
 
 #define GDTEST_STRING_MAX 1024
 typedef struct CuTestImageResult CuTestImageResult;
@@ -72,7 +71,7 @@
 
 #define gdTestAssert(cond) _gdTestAssert(__FILE__, __LINE__, (cond))
 
-#define gdTestAssertMsg(cond, message, ...) _gdTestAssertMsg(__FILE__, __LINE__, (cond),(message),__VA_ARGS__)
+#define gdTestAssertMsg(cond, message, ...) _gdTestAssertMsg(__FILE__, __LINE__, (cond), (message), ## __VA_ARGS__)
 
 
 #define gdTestErrorMsg(...) _gdTestErrorMsg(__FILE__, __LINE__, __VA_ARGS__)

Deleted: trunk/Build/source/libs/gd/libgd-src/tests/gdtest/test_config.h.cmake
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gdtest/test_config.h.cmake	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gdtest/test_config.h.cmake	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,4 +0,0 @@
-/* Define the full path to the top src dir, required to get the path
- * of each input data */
-#cmakedefine GDTEST_TOP_DIR "@GDTEST_TOP_DIR@"
-

Modified: trunk/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -27,6 +27,10 @@
 		gdTestErrorMsg("Cannot open <%s> for writing\n", file);
 		return 1;
 	}
+
+	gdImageTrueColorToPaletteSetMethod(im, GD_QUANT_JQUANT, 0);
+	gdImageTrueColorToPalette(im, 1, 256);
+
 	gdImageGif(im,fp);
 	fclose(fp);
 

Deleted: trunk/Build/source/libs/gd/libgd-src/tests/test_config.h.in
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/test_config.h.in	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/test_config.h.in	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,9 +0,0 @@
-#ifndef GD_TEST_CONFIG_H
-#define GD_TEST_CONFIG_H
-
-
-/* Define the full path to the top src dir, required to get the path
- * of each input data */
-#define GDTEST_TOP_DIR "@srcdir@"
-#endif
-

Modified: trunk/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -5,6 +5,8 @@
 	bug00247a
 	bug00248
 	bug00248a
+	heap_overflow
+	tga_read
 )
 
 ADD_GD_TESTS()

Modified: trunk/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -4,7 +4,9 @@
 	tga/bug00247a \
 	tga/bug00248 \
 	tga/bug00248a \
-	tga/tga_null
+	tga/heap_overflow \
+	tga/tga_null \
+	tga/tga_read
 
 EXTRA_DIST += \
 	tga/CMakeLists.txt \
@@ -12,4 +14,9 @@
 	tga/bug00247.tga \
 	tga/bug00247a.tga \
 	tga/bug00248.tga \
-	tga/bug00248a.tga
+	tga/bug00248a.tga \
+	tga/heap_overflow_1.tga \
+	tga/heap_overflow_2.tga \
+	tga/tga_read_rgb.png \
+	tga/tga_read_rgb.tga \
+	tga/tga_read_rgb_rle.tga

Added: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,59 @@
+/**
+ * Test that crafted TGA files don't trigger OOB reads.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+static void check_file(char *basename);
+static size_t read_test_file(char **buffer, char *basename);
+
+
+int main()
+{
+    check_file("heap_overflow_1.tga");
+    check_file("heap_overflow_2.tga");
+
+    return gdNumFailures();
+}
+
+
+static void check_file(char *basename)
+{
+    gdImagePtr im;
+    char *buffer;
+    size_t size;
+
+    size = read_test_file(&buffer, basename);
+    im = gdImageCreateFromTgaPtr(size, (void *) buffer);
+    gdTestAssert(im == NULL);
+    free(buffer);
+}
+
+
+static size_t read_test_file(char **buffer, char *basename)
+{
+    char *filename;
+    FILE *fp;
+    size_t exp_size, act_size;
+
+    filename = gdTestFilePath2("tga", basename);
+    fp = fopen(filename, "rb");
+    gdTestAssert(fp != NULL);
+
+	fseek(fp, 0, SEEK_END);
+	exp_size = ftell(fp);
+	fseek(fp, 0, SEEK_SET);
+
+    *buffer = malloc(exp_size);
+    gdTestAssert(*buffer != NULL);
+    act_size = fread(*buffer, sizeof(**buffer), exp_size, fp);
+    gdTestAssert(act_size == exp_size);
+
+    fclose(fp);
+    free(filename);
+
+    return act_size;
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_1.tga
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_1.tga
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_1.tga	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_1.tga	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_1.tga
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_2.tga
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_2.tga
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_2.tga	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_2.tga	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tga/heap_overflow_2.tga
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,40 @@
+/**
+ * Basic test case for reading TGA files.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+static void assert_equals(char *exp, char *orig);
+
+
+int main()
+{
+    assert_equals("tga_read_rgb.png", "tga_read_rgb.tga");
+    assert_equals("tga_read_rgb.png", "tga_read_rgb_rle.tga");
+
+    return gdNumFailures();
+}
+
+
+static void assert_equals(char *exp, char *orig)
+{
+    gdImagePtr im;
+    FILE *fp;
+    char *filename;
+
+    fp = gdTestFileOpen2("tga", orig);
+    gdTestAssertMsg(fp != NULL, "can't open %s", orig);
+
+    im = gdImageCreateFromTga(fp);
+    gdTestAssertMsg(im != NULL, "can't read %s", orig);
+    fclose(fp);
+
+    filename = gdTestFilePath2("tga", exp);
+    gdAssertImageEqualsToFile(filename, im);
+    gdFree(filename);
+
+    gdImageDestroy(im);
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.png
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.png
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.png	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.png	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.tga
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.tga
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.tga	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.tga	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb.tga
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb_rle.tga
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb_rle.tga
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb_rle.tga	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb_rle.tga	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tga/tga_read_rgb_rle.tga
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,7 @@
 IF(TIFF_FOUND)
 SET(TESTS_FILES
 	tiff_im2im
+	tiff_invalid_read
 	tiff_null
 	tiff_dpi
 )

Modified: trunk/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -2,8 +2,12 @@
 libgd_test_programs += \
 	tiff/tiff_dpi \
 	tiff/tiff_im2im \
+	tiff/tiff_invalid_read \
 	tiff/tiff_null
 endif
 
 EXTRA_DIST += \
-	tiff/CMakeLists.txt
+	tiff/CMakeLists.txt \
+	tiff/tiff_invalid_read_1.tiff \
+	tiff/tiff_invalid_read_2.tiff \
+	tiff/tiff_invalid_read_3.tiff

Modified: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -66,12 +66,12 @@
 
 	if (dst->res_x != res_x) {
 		status = 1;
-		gdTestErrorMsg("mismatch in res_x (got %d, expected %d)", dst->res_x, res_x);
+		gdTestErrorMsg("mismatch in res_x (got %d, expected %d)\n", dst->res_x, res_x);
 	}
 
 	if (dst->res_y != res_y) {
 		status = 1;
-		gdTestErrorMsg("mismatch in res_y (got %d, expected %d)", dst->res_y, res_y);
+		gdTestErrorMsg("mismatch in res_y (got %d, expected %d)\n", dst->res_y, res_y);
 	}
 
 	gdImageDestroy(dst);
@@ -81,4 +81,4 @@
 	gdImageDestroy(src);
 	return status;
 }
-#endif
\ No newline at end of file
+#endif

Added: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,61 @@
+/*
+We're testing that reading corrupt TIFF files doesn't cause any memory issues,
+and that the operation gracefully fails (i.e. gdImageCreateFromTiffPtr() returns
+NULL).
+*/
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+static void check_file(char *basename);
+static size_t read_test_file(char **buffer, char *basename);
+
+
+int main()
+{
+    check_file("tiff_invalid_read_1.tiff");
+    check_file("tiff_invalid_read_2.tiff");
+    check_file("tiff_invalid_read_3.tiff");
+
+    return gdNumFailures();
+}
+
+
+static void check_file(char *basename)
+{
+    gdImagePtr im;
+    char *buffer;
+    size_t size;
+
+    size = read_test_file(&buffer, basename);
+    im = gdImageCreateFromTiffPtr(size, (void *) buffer);
+    gdTestAssert(im == NULL);
+    free(buffer);
+}
+
+
+static size_t read_test_file(char **buffer, char *basename)
+{
+    char *filename;
+    FILE *fp;
+    size_t exp_size, act_size;
+
+    filename = gdTestFilePath2("tiff", basename);
+    fp = fopen(filename, "rb");
+    gdTestAssert(fp != NULL);
+
+	fseek(fp, 0, SEEK_END);
+	exp_size = ftell(fp);
+	fseek(fp, 0, SEEK_SET);
+
+    *buffer = malloc(exp_size);
+    gdTestAssert(*buffer != NULL);
+    act_size = fread(*buffer, sizeof(**buffer), exp_size, fp);
+    gdTestAssert(act_size == exp_size);
+
+    fclose(fp);
+    free(filename);
+
+    return act_size;
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_1.tiff
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_1.tiff
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_1.tiff	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_1.tiff	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_1.tiff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_2.tiff
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_2.tiff
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_2.tiff	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_2.tiff	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_2.tiff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_3.tiff
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_3.tiff
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_3.tiff	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_3.tiff	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/tiff/tiff_invalid_read_3.tiff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,6 +1,7 @@
 IF(WEBP_FOUND)
 SET(TESTS_FILES
 	bug00111
+	bug_double_free
 )
 ENDIF(WEBP_FOUND)
 

Modified: trunk/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am	2017-01-18 23:13:46 UTC (rev 42987)
@@ -1,7 +1,9 @@
 if HAVE_LIBWEBP
 libgd_test_programs += \
-	webp/bug00111
+	webp/bug00111 \
+	webp/bug_double_free
 endif
 
 EXTRA_DIST += \
-	webp/CMakeLists.txt
+	webp/CMakeLists.txt \
+	webp/bug_double_free.jpg

Added: trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.c
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.c	                        (rev 0)
+++ trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.c	2017-01-18 23:13:46 UTC (rev 42987)
@@ -0,0 +1,29 @@
+/**
+ * Test that a too large image doesn't trigger an double-free when written
+ * to memory.
+ */
+
+
+#include "gd.h"
+#include "gdtest.h"
+
+
+int main()
+{
+    gdImagePtr im1, im2;
+    FILE *fp;
+    int size;
+
+    fp = gdTestFileOpen2("webp", "bug_double_free.jpg");
+    gdTestAssert(fp != NULL);
+    im1 = gdImageCreateFromJpeg(fp);
+    gdTestAssert(im1 != NULL);
+    fclose(fp);
+
+    im2 = gdImageWebpPtr(im1, &size);
+    gdTestAssert(im2 == NULL);
+
+    gdImageDestroy(im1);
+
+    return gdNumFailures();
+}


Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.jpg
===================================================================
(Binary files differ)

Index: trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.jpg
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.jpg	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.jpg	2017-01-18 23:13:46 UTC (rev 42987)

Property changes on: trunk/Build/source/libs/gd/libgd-src/tests/webp/bug_double_free.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/jpeg
\ No newline at end of property
Modified: trunk/Build/source/libs/gd/libgd-src/windows/Makefile.vc
===================================================================
--- trunk/Build/source/libs/gd/libgd-src/windows/Makefile.vc	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/libgd-src/windows/Makefile.vc	2017-01-18 23:13:46 UTC (rev 42987)
@@ -41,7 +41,9 @@
 
 GD_DLL=libgd.dll
 GD_LIB=libgd_a.lib
+GD_CONFIG_H=$(LIBGD_SRC_DIR)\config.h
 
+
 SDR=$(BUILD_DIR)^\
 TDR=$(BUILD_DIR)\tests^\
 TARGETDLL=$(BUILD_DIR)\$(GD_DLL)
@@ -124,16 +126,19 @@
 	   /DHAVE_LIBXPM=1\
        $(INCLUDES)
 
-TEST_CFLAGS=$(CFLAGS) /FItest_config.h
+TEST_CFLAGS=$(CFLAGS)
 TEST_LDFLAGS=$(LDFLAGS) $(SDR)readdir.obj $(SDR)gdtest.obj $(BUILD_DIR)\libgd.lib
-TEST_CONFIG=tests\test_config.h
 TEST_LIST=$(TDR)testlist.txt
 TEST_MK=$(TDR)Maketests.vc
 
-# generate test makefile from TESTS macro
-# generate test makefile from TESTS macro
+TEST_OBJS=$(TEST_EXES:tests=obj)
+TEST_OBJS=$(TEST_OBJS:exe=obj)
+
+# create buil dir and test exe dir. test ext dir may not be called but easier like this
+# so we can include the gentest file
 !IF [if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)]
 !ENDIF
+
 !IF [if not exist $(TDR) mkdir $(TDR)]
 !ENDIF
 
@@ -140,9 +145,6 @@
 !IF [$(MAKEDIR)\windows\gentest.bat tests $(BUILD_DIR) "$(TEST_CFLAGS)" "$(TEST_LDFLAGS)" $(CC) $(LD) "$(TEST_MK)" "$(TEST_LIST)"]
 !ENDIF
 
-TEST_OBJS=$(TEST_EXES:tests=obj)
-TEST_OBJS=$(TEST_OBJS:exe=obj)
-
 # pseudotargets
 build_libs: make_dirs $(TARGETDLL) $(TARGETLIB)
 all: build_libs build_tests
@@ -152,17 +154,46 @@
   @if exist $(SDR) rd $(SDR) /s /q
   @if exist $(TDR) rd $(TDR) /s /q
   @if exist $(BUILD_DIR)\*.exe del $(BUILD_DIR)\*.exe /q
-  @if exist tests\test_config.h del tests\test_config.h /q
 
 # helpers
 
 make_dirs:
-  @if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)
-  @if not exist $(SDR) mkdir $(SDR)
+	@if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)
+	@if not exist $(SDR) mkdir $(SDR)
+	@echo #ifndef HAVE_FT2BUILD_H> $(GD_CONFIG_H)
+	@echo #define HAVE_FT2BUILD_H>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_ICONV_H>> $(GD_CONFIG_H)
+	@echo #define HAVE_ICONV_H>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_LIBFREETYPE>> $(GD_CONFIG_H)
+	@echo #define HAVE_LIBFREETYPE>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_LIBJPEG>> $(GD_CONFIG_H)
+	@echo #define HAVE_LIBJPEG>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_LIBPNG>> $(GD_CONFIG_H)
+	@echo #define HAVE_LIBPNG>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_LIBWEBP>> $(GD_CONFIG_H)
+	@echo #define HAVE_LIBWEBP>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_LIBZ>> $(GD_CONFIG_H)
+	@echo #define HAVE_LIBZ>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_LIBXPM>> $(GD_CONFIG_H)
+	@echo #define HAVE_LIBXPM>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_INTTYPES_H>> $(GD_CONFIG_H)
+	@echo #define HAVE_INTTYPES_H>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)
+	@echo #ifndef HAVE_SYS_STAT_H>> $(GD_CONFIG_H)
+	@echo #define HAVE_SYS_STAT_H>> $(GD_CONFIG_H)
+	@echo #endif>> $(GD_CONFIG_H)	
 
-run_tests:
-  @cd $(TDR)
-  @$(MAKEDIR)\windows\run_tests
+run_tests: pretest
+	@cd $(TDR)
+	@$(MAKEDIR)\windows\run_tests
 
 # libgd
 $(LIBGD_OBJ_DIR):
@@ -195,23 +226,12 @@
 !INCLUDE $(TEST_MK)
 build_tests: $(TEST_LIST) $(SDR)readdir.obj $(SDR)gdtest.obj $(TEST_EXES)
 
-$(SDR)gdtest.obj: $(TARGETDLL) $(TEST_CONFIG) tests\gdtest\gdtest.c
-  @$(CC) $(CFLAGS) /c tests\gdtest\gdtest.c /Fo$(SDR)gdtest.obj
+$(SDR)gdtest.obj: $(TARGETDLL) tests\gdtest\gdtest.c
+  @$(CC) $(CFLAGS) /DGDTEST_TOP_DIR=\"$(MAKEDIR:\=\\)\\tests\" /c tests\gdtest\gdtest.c /Fo$(SDR)gdtest.obj
 
-$(SDR)readdir.obj: $(TARGETDLL) $(TEST_CONFIG) tests\gdtest\readdir.c
+$(SDR)readdir.obj: $(TARGETDLL) tests\gdtest\readdir.c
   @$(CC) $(CFLAGS) /c tests\gdtest\readdir.c /Fo$(SDR)readdir.obj
-  
-$(TEST_CONFIG):
-  @echo #ifndef GD_TEST_CONFIG_H> tests\test_config.h
-  @echo #define GD_TEST_CONFIG_H>> tests\test_config.h
-  @echo #ifndef GDTEST_TOP_DIR>> tests\test_config.h
-  @echo #define GDTEST_TOP_DIR "$(MAKEDIR:\=\\)\\tests">> tests\test_config.h
-  @echo #endif>> tests\test_config.h
-  @echo #ifndef _WIN32>> tests\test_config.h
-  @echo #define snprintf _snprintf>> tests\test_config.h
-  @echo #endif>> tests\test_config.h
-  @echo #endif>> tests\test_config.h
 
-$(TEST_LIST): $(TARGETDLL)
-  if not exist $(TDR) mkdir $(TDR)
-  copy $(TARGETDLL) $(TDR)$(GD_DLL)
\ No newline at end of file
+pretest: $(TARGETDLL)
+	if not exist $(TDR) mkdir $(TDR)
+	copy $(TARGETDLL) $(TDR)$(GD_DLL)
\ No newline at end of file

Modified: trunk/Build/source/libs/gd/version.ac
===================================================================
--- trunk/Build/source/libs/gd/version.ac	2017-01-18 22:18:48 UTC (rev 42986)
+++ trunk/Build/source/libs/gd/version.ac	2017-01-18 23:13:46 UTC (rev 42987)
@@ -8,4 +8,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current gd version
-m4_define([gd_version], [2.2.3])
+m4_define([gd_version], [2.2.4])



More information about the tex-live-commits mailing list