diff --git a/src/gd_png.c b/src/gd_png.c index a325e5c..4d8d49f 100644 --- a/src/gd_png.c +++ b/src/gd_png.c @@ -1079,11 +1079,12 @@ static int _gdImagePngCtxEx(gdImagePtr im, gdIOCtx * outfile, int level) } png_write_image (png_ptr, row_pointers); - png_write_end (png_ptr, info_ptr); for (j = 0; j < height; ++j) gdFree (row_pointers[j]); gdFree (row_pointers); + + png_write_end (png_ptr, info_ptr); } else { png_write_image (png_ptr, im->pixels); png_write_end (png_ptr, info_ptr); diff --git a/tests/gd2/CMakeLists.txt b/tests/gd2/CMakeLists.txt index cc188ca..0a9a157 100644 --- a/tests/gd2/CMakeLists.txt +++ b/tests/gd2/CMakeLists.txt @@ -6,6 +6,7 @@ LIST(APPEND TESTS_FILES bug00309 bug00354 bug00383 + bug797 createimagefromgd2part createimagefromgd2partptr gd2_empty_file diff --git a/tests/gd2/bug797.c b/tests/gd2/bug797.c new file mode 100644 index 0000000..89adedd --- /dev/null +++ b/tests/gd2/bug797.c @@ -0,0 +1,32 @@ +/** + * Test that invalid transparent colors can't be read + * + * We're reading a corrupt palette image in GD2 format, which has only a single + * palette entry, but claims that the transparent color would be 1. We check + * that the transparency is simply ignored in this case. + * + * See also + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + + fp = gdTestFileOpen2("gd2", "bug797.gd2"); + gdTestAssert(fp != NULL); + im = gdImageCreateFromGd2(fp); + gdTestAssert(im != NULL); + fclose(fp); + + gdTestAssert(gdImageGetTransparent(im) == -1); + + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/tests/gd2/bug797.gd2 b/tests/gd2/bug797.gd2 new file mode 100644 index 0000000..1b41762 Binary files /dev/null and b/tests/gd2/bug797.gd2 differ diff --git a/tests/gdimagestringft/CMakeLists.txt b/tests/gdimagestringft/CMakeLists.txt index 42868a2..d1d8c61 100644 --- a/tests/gdimagestringft/CMakeLists.txt +++ b/tests/gdimagestringft/CMakeLists.txt @@ -1,8 +1,14 @@ IF(FREETYPE_FOUND) LIST(APPEND TESTS_FILES bug00615 +) + +IF (NOT MINGW) +LIST(APPEND TESTS_FILES gdimagestringft_bbox ) +ENDIF(NOT MINGW) + ENDIF(FREETYPE_FOUND) ADD_GD_TESTS()