Libpng 1.5.7 - December 15, 2011

This is a public release of libpng, intended for use in production codes.

Files available for download:

Source files with LF line endings (for Unix/Linux) and with a
"configure" script

  libpng-1.5.7.tar.xz (LZMA-compressed, recommended)
  libpng-1.5.7.tar.gz
  libpng-1.5.7.tar.bz2

Source files with CRLF line endings (for Windows), without the
"configure" script

  lpng157.7z  (LZMA-compressed, recommended)
  lpng157.zip

Other information:

  libpng-1.5.7-README.txt
  libpng-1.5.7-LICENSE.txt

Changes since the last public release (1.5.6):
 Added support for ARM processor (Mans Rullgard)
 Fixed bug in pngvalid on early allocation failure; fixed type cast in
   pngmem.c; pngvalid would attempt to call png_error() if the allocation
   of a png_struct or png_info failed. This would probably have led to a
   crash.  The pngmem.c implementation of png_malloc() included a cast
   to png_size_t which would fail on large allocations on 16-bit systems.
 Fix for the preprocessor of the Intel C compiler. The preprocessor
   splits adjacent @ signs with a space; this changes the concatentation
   token from @-@-@ to PNG_JOIN; that should work with all compiler
   preprocessors.
 Paeth filter speed improvements from work by Siarhei Siamashka. This
   changes the 'Paeth' reconstruction function to improve the GCC code
   generation on x86. The changes are only part of the suggested ones;
   just the changes that definitely improve speed and remain simple.
   The changes also slightly increase the clarity of the code.
 Check compression_type parameter in png_get_iCCP and remove spurious
   casts. The compression_type parameter is always assigned to, so must
   be non-NULL. The cast of the profile length potentially truncated the
   value unnecessarily on a 16-bit int system, so the cast of the (byte)
   compression type to (int) is specified by ANSI-C anyway.
 Fixed FP division by zero in pngvalid.c; the 'test_pixel' code left
   the sBIT fields in the test pixel as 0, which resulted in a floating
   point division by zero which was irrelevant but causes systems where
   FP exceptions cause a crash. Added code to pngvalid to turn on FP
   exceptions if the appropriate glibc support is there to ensure this is
   tested in the future.
 Added versioning to pnglibconf.h comments.
 Installed more accurate linear to sRGB conversion tables. The slightly
   modified tables reduce the number of 16-bit values that
   convert to an off-by-one 8-bit value.  The "makesRGB.c" code that was used
   to generate the tables is now in a contrib/sRGBtables sub-directory.
 Added run-time detection of NEON support.
 Multiple transform bug fixes plus a work-round for double gamma correction.
   libpng does not support more than one transform that requires linear data
   at once - if this is tried typically the results is double gamma
   correction. Since the simplified APIs can need rgb to gray combined with
   a compose operation it is necessary to do one of these outside the main
   libpng transform code. This check-in also contains fixes to various bugs
   in compose and rgb to gray (on palette).
 Fixes for C++ compilation using g++ When libpng source is compiled
   using g++. The compiler imposes C++ rules on the C source; thus it
   is desireable to make the source work with either C or C++ rules
   without throwing away useful error information.  This change adds
   png_voidcast to allow C semantic (void*) cases or the corresponding
   C++ static_cast operation, as appropriate.
 Added --noexecstack to assembler file compilation. GCC does not set
   this on assembler compilation, even though it does on C compilation.
   This creates security issues if assembler code is enabled; the
   work-around is to set it by default in the flags for $(CCAS)
 Removed "zTXt" from warning in generic chunk decompression function.
 Validate time settings passed to pngset() and png_convert_to_rfc1123()
   (Frank Busse).
 Added MINGW support to CMakeLists.txt
 Reject invalid compression flag or method when reading the iTXt chunk.
 Moved pngvalid.c into contrib/libtests
 Rebuilt Makefile.in, configure, etc., with autoconf-2.68
 Replaced an "#if" with "#ifdef" in pngrtran.c
 Revised #if PNG_DO_BC block in png.c (use #ifdef and add #else)
 Revised pngconf.h to use " __declspec(restrict)" only when MSC_VER >= 1400,
   as in libpng-1.5.4.
 Put CRLF line endings in the owatcom project files.
 Updated CMakeLists.txt to account for the relocation of pngvalid.c
 Minor fixes to pngvalid.c for gcc 4.6.2 compatibility to remove warnings
   reported by earlier versions.

Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe)
or to glennrp at users.sourceforge.net

Glenn R-P