
Libpng 1.2.41beta18 - November 11, 2009

This is not intended to be a public release.  It will be replaced
within a few weeks by a public version or by another test version.

Files available for download:

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

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

Source files with LF line endings (for Unix/Linux) without the
"configure" script

   libpng-1.2.41beta18-no-config.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.41beta18-no-config.tar.gz
   libpng-1.2.41beta18-no-config.tar.bz2

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

   lp1241b18.zip
   lp1241b18.7z
   lp1241b18.tar.bz2

Project files

   libpng-1.2.41beta18-project-netware.zip
   libpng-1.2.41beta18-project-wince.zip

Other information:

   libpng-1.2.41beta18-README.txt
   libpng-1.2.41beta18-KNOWNBUGS.txt
   libpng-1.2.41beta18-LICENSE.txt
   libpng-1.2.41beta18-Y2K-compliance.txt
   libpng-1.2.41beta18-[previous version]-diff.txt

Changes since the last public release (1.2.40):

version 1.2.41beta01 [September 25, 2009]
  Moved redundant IHDR checking into new png_check_IHDR() in png.c
    and report all errors found in the IHDR data.
  Eliminated useless call to png_check_cHRM() from pngset.c
  Expanded TAB characters in pngrtran.c

version 1.2.41beta02 [September 30, 2009]
  Revised png_check_IHDR().

version 1.2.41beta03 [October 1, 2009]
  Revised png_check_IHDR() again, to check info_ptr members instead of
    the contents of the returned parameters.

version 1.2.41beta04 [October 7, 2009]
  Added "xcode" project similar one already in libpng-1.4.0beta (Alam Arias).
  Ported some cosmetic changes from libpng-1.4.0beta86.
  Eliminated a shadowed declaration of "pp" in png_handle_sPLT().

version 1.2.41beta05 [October 17, 2009]
  Revised pngconf.h to make it easier to enable iTXt support.  From libpng
    version 1.2.9 through 1.2.40, defining PNG_iTXt_SUPPORTED did not work
    as expected.
  Ported some cosmetic changes from libpng-1.4.0beta87, changing
    many "#if defined(x)" to "#ifdef x".

version 1.2.41beta06 [October 18, 2009]
  Restored PNG_USE_LOCAL_ARRAYS code in pngread.c that was inadvertently
    deleted in libpng-1.2.41beta05.
  Converted all PNG_NO_* tests to PNG_*_SUPPORTED everywhere except pngconf.h
    as in libpng-1.4.0beta78 and later.

version 1.2.41beta07 [October 21, 2009]
  Ported some cosmetic changes from libpng-1.4.0rc01, changing
    many "#if defined(x)" to "#ifdef x" in png.h and pngconf.h.

version 1.2.41beta08 [October 30, 2009]
  Ported from libpng-1.4.0rc01: png_calloc(), png_get_io_chunk_name(),
    png_get_io_state(), png_set_user_cache_max(), png_get_user_cache_max(),
    png_set_premultiply_alpha, and png_do_read_premultiply_alpha().
  Relocated png_do_chop() ahead of building gamma tables in pngrtran.c
    This avoids building 16-bit gamma tables unnecessarily.

version 1.2.41beta09 [November 1, 2009]
  Removed a harmless extra png_set_invert_alpha() from pngwrite.c
  More bugfixes and improvements to CMakeLists.txt (Philip Lowman)
  Moved CMakeLists.txt from scripts into the main libpng directory.
  Apply png_user_chunk_cache_max within png_decompress_chunk().
  Merged libpng-1.2.41.txt with libpng-1.4.0.txt where appropriate.

version 1.2.41beta10 [November 1, 2009]
  Enabled iTXt support by default. To ensure binary compatibility with
    previous versions, the "lang" and "lang_key" members will be assumed
    to be omitted from previous versions unless the current libpng
    version was built with PNG_iTXt_SUPPORTED (which is otherwise no
    longer necessary to gain iTXt support), as a signal that the user has
    been building previous versions with PNG_iTXt_SUPPORTED as well.

version 1.2.41beta11 [November 2, 2009]
  Store user's user_png_ver in new png_ptr->user_png_ver element.
  Revised iTXt support. To ensure binary compatibility with
    previous versions, the "lang" and "lang_key" members will be assumed
    to be omitted from versions prior to 1.2.41beta11 whenever there is a
    library mismatch.

version 1.2.41beta12 [November 2, 2009]
  Free png_ptr->user_png_ver when destroying png_ptr.

version 1.2.41beta13 [November 3, 2009]
  Updated scripts/pngw32.def and projects/wince/png32ce.def
  Copied projects/wince/png32ce.def to the scripts directory.
  Added scripts/makefile.wce
  Patched ltmain.sh for wince support.
  Added PNG_CONVERT_tIME_SUPPORTED macro.

version 1.2.41beta14 [November 8, 2009]
  versions 1.2.41beta05 through 1.2.41beta13 were abandoned.
  Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED
  Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED
  Reverted iTXt compatibility stuff from 1.2.41beta05, 1.2.41beta11, and
    1.2.41beta12.
  Reverted IOSTATE feature, user_cache_max, and premultiply_alpha features
    from 1.2.41beta08.
  Retained png_calloc() from 1.2.41beta08 but as a non-exported function,
    and removed reference to png_calloc from scripts/*.def

version 1.2.41beta15 [November 8, 2009]
  Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and
    PNG_ALLOCATED macros to detect deprecated direct access to the
    png_struct or info_struct members and other deprecated usage in
    applications (John Bowler).
  Updated scripts/makefile* to add "-DPNG_CONFIGURE_LIBPNG" to CFLAGS,
    to prevent warnings about direct access to png structs by libpng
    functions while building libpng.  They need to be tested, especially
    those using compilers other than gcc.
  Updated projects/visualc6 and visualc71 with "/d PNG_CONFIGURE_LIBPNG".

version 1.2.41beta16 [November 9, 2009]
  Removed three direct references to read_info_ptr members in pngtest.c
    that were detected by the new PNG_DEPSTRUCT macro.
  Only #define PNG_DEPSTRUCT, etc. in pngconf.h if not already defined.

version 1.2.41beta17 [November 10, 2009]
  Updated CMakeLists.txt to add "-DPNG_CONFIGURE_LIBPNG" to the definitions.
  Marked deprecated function prototypes with PNG_DEPRECATED.
  Marked memory allocation function prototypes with PNG_ALLOCATED.
  Changed png_check_sig() to !png_sig_cmp() in contrib programs.
  Corrected the png_get_IHDR() call in contrib/gregbook/readpng2.c
  Added "-DPNG_CONFIGURE_LIBPNG" to the contrib/pngminum makefiles.

version 1.2.41rc01 [November 11, 2009]
  Renamed scripts/makefile.wce to scripts/makefile.cegcc

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
