File use_system_libs_libpng15.patch of Package freeimage
diff -Naur FreeImage/Source/FreeImage/PluginPNG.cpp FreeImage.libpng15/Source/FreeImage/PluginPNG.cpp
--- FreeImage/Source/FreeImage/PluginPNG.cpp 2012-02-19 03:33:18.000000000 +0200
+++ FreeImage.libpng15/Source/FreeImage/PluginPNG.cpp 2012-10-28 20:37:00.786892452 +0200
@@ -37,8 +37,8 @@
// ----------------------------------------------------------
-#include "../ZLib/zlib.h"
-#include "../LibPNG/png.h"
+#include <zlib.h>
+#include <png.h>
// ----------------------------------------------------------
@@ -106,7 +106,11 @@
tag = FreeImage_CreateTag();
if(!tag) return FALSE;
+#ifdef PNG_iTXt_SUPPORTED
DWORD tag_length = (DWORD) MAX(text_ptr[i].text_length, text_ptr[i].itxt_length);
+#else
+ DWORD tag_length = text_ptr[i].text_length;
+#endif
FreeImage_SetTagLength(tag, tag_length);
FreeImage_SetTagCount(tag, tag_length);
@@ -153,9 +157,11 @@
text_metadata.key = (char*)FreeImage_GetTagKey(tag); // keyword, 1-79 character description of "text"
text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "")
text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string
+#ifdef PNG_iTXt_SUPPORTED
text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string
text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer
text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer
+#endif
// set the tag
png_set_text(png_ptr, info_ptr, &text_metadata, 1);
@@ -175,9 +181,11 @@
text_metadata.key = (char*)g_png_xmp_keyword; // keyword, 1-79 character description of "text"
text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "")
text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string
+#ifdef PNG_iTXt_SUPPORTED
text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string
text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer
text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer
+#endif
// set the tag
png_set_text(png_ptr, info_ptr, &text_metadata, 1);
@@ -599,7 +607,9 @@
row_pointers[height - 1 - k] = FreeImage_GetScanLine(dib, k);
}
+#ifdef PNG_BENIGN_ERRORS_SUPPORTED
png_set_benign_errors(png_ptr, 1);
+#endif
png_read_image(png_ptr, row_pointers);
// check if the bitmap contains transparency, if so enable it in the header