[devel] Use png_calloc() instead of png_malloc(); png_memset() in pngrutil.c
diff --git a/ANNOUNCE b/ANNOUNCE
index 6a00d02..e4d0c7b 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
 
-Libpng 1.4.0rc07 - December 30, 2009
+Libpng 1.4.0rc07 - January 1, 2010
 
 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.
@@ -759,10 +759,11 @@
   Reverted the gamma_table changes from libpng-1.4.0beta109.
   Fixed some indentation errors.
 
-version 1.4.0rc07 [December 30, 2009]
+version 1.4.0rc07 [January 1, 2010]
   Revised libpng*.txt and libpng.3 about 1.2.x->1.4.x differences.
+  Use png_calloc() instead of png_malloc(); png_memset() in pngrutil.c
 
-version 1.4.0 [December 30, 2009]
+version 1.4.0 [January 1, 2010]
   No changes.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
diff --git a/CHANGES b/CHANGES
index 83162dd..e4d0c7b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,1529 +1,30 @@
-#if 0
-libpng_changes(){ /*
-CHANGES - changes for libpng
 
-version 0.2
-  added reader into png.h
-  fixed small problems in stub file
+Libpng 1.4.0rc07 - January 1, 2010
 
-version 0.3
-  added pull reader
-  split up pngwrite.c to several files
-  added pnglib.txt
-  added example.c
-  cleaned up writer, adding a few new transformations
-  fixed some bugs in writer
-  interfaced with zlib 0.5
-  added K&R support
-  added check for 64 KB blocks for 16 bit machines
+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.
 
-version 0.4
-  cleaned up code and commented code
-  simplified time handling into png_time
-  created png_color_16 and png_color_8 to handle color needs
-  cleaned up color type defines
-  fixed various bugs
-  made various names more consistent
-  interfaced with zlib 0.71
-  cleaned up zTXt reader and writer (using zlib's Reset functions)
-  split transformations into pngrtran.c and pngwtran.c
+Files available for download:
 
-version 0.5
-  interfaced with zlib 0.8
-  fixed many reading and writing bugs
-  saved using 3 spaces instead of tabs
+Source files with LF line endings (for Unix/Linux) and with a
+"configure" script
 
-version 0.6
-  added png_large_malloc() and png_large_free()
-  added png_size_t
-  cleaned up some compiler warnings
-  added png_start_read_image()
+   1.4.0rc07.tar.xz (LZMA-compressed, recommended)
+   1.4.0rc07.tar.gz
+   1.4.0rc07.tar.bz2
 
-version 0.7
-  cleaned up lots of bugs
-  finished dithering and other stuff
-  added test program
-  changed name from pnglib to libpng
+Source files with CRLF line endings (for Windows), without the
+"configure" script
 
-version 0.71 [June, 1995]
-  changed pngtest.png for zlib 0.93
-  fixed error in libpng.txt and example.c
+   lp140r07.zip
+   lp140r07.7z
 
-version 0.8
-  cleaned up some bugs
-  added png_set_filler()
-  split up pngstub.c into pngmem.c, pngio.c, and pngerror.c
-  added #define's to remove unwanted code
-  moved png_info_init() to png.c
-  added old_size into png_realloc()
-  added functions to manually set filtering and compression info
-  changed compression parameters based on image type
-  optimized filter selection code
-  added version info
-  changed external functions passing floats to doubles (k&r problems?)
-  put all the configurable stuff in pngconf.h
-  enabled png_set_shift to work with paletted images on read
-  added png_read_update_info() - updates info structure with
-     transformations
+Other information:
 
-version 0.81 [August, 1995]
-  incorporated Tim Wegner's medium model code (thanks, Tim)
+   1.4.0rc07-README.txt
+   1.4.0rc07-LICENSE.txt
 
-version 0.82 [September, 1995]
-  [unspecified changes]
-
-version 0.85 [December, 1995]
-  added more medium model code (almost everything's a far)
-  added i/o, error, and memory callback functions
-  fixed some bugs (16 bit, 4 bit interlaced, etc.)
-  added first run progressive reader (barely tested)
-
-version 0.86 [January, 1996]
-  fixed bugs
-  improved documentation
-
-version 0.87 [January, 1996]
-  fixed medium model bugs
-  fixed other bugs introduced in 0.85 and 0.86
-  added some minor documentation
-
-version 0.88 [January, 1996]
-  fixed progressive bugs
-  replaced tabs with spaces
-  cleaned up documentation
-  added callbacks for read/write and warning/error functions
-
-version 0.89 [July, 1996]
-  added new initialization API to make libpng work better with shared libs
-     we now have png_create_read_struct(), png_create_write_struct(),
-     png_create_info_struct(), png_destroy_read_struct(), and
-     png_destroy_write_struct() instead of the separate calls to
-     malloc and png_read_init(), png_info_init(), and png_write_init()
-  changed warning/error callback functions to fix bug - this means you
-     should use the new initialization API if you were using the old
-     png_set_message_fn() calls, and that the old API no longer exists
-     so that people are aware that they need to change their code
-  changed filter selection API to allow selection of multiple filters
-     since it didn't work in previous versions of libpng anyways
-  optimized filter selection code
-  fixed png_set_background() to allow using an arbitrary RGB color for
-     paletted images
-  fixed gamma and background correction for paletted images, so
-     png_correct_palette is not needed unless you are correcting an
-     external palette (you will need to #define PNG_CORRECT_PALETTE_SUPPORTED
-     in pngconf.h) - if nobody uses this, it may disappear in the future.
-  fixed bug with Borland 64K memory allocation (Alexander Lehmann)
-  fixed bug in interlace handling (Smarasderagd, I think)
-  added more error checking for writing and image to reduce invalid files
-  separated read and write functions so that they won't both be linked
-     into a binary when only reading or writing functionality is used
-  new pngtest image also has interlacing and zTXt
-  updated documentation to reflect new API
-
-version 0.90 [January, 1997]
-  made CRC errors/warnings on critical and ancillary chunks configurable
-  libpng will use the zlib CRC routines by (compile-time) default
-  changed DOS small/medium model memory support - needs zlib 1.04 (Tim Wegner)
-  added external C++ wrapper statements to png.h (Gilles Dauphin)
-  allow PNG file to be read when some or all of file signature has already
-     been read from the beginning of the stream.  ****This affects the size
-     of info_struct and invalidates all programs that use a shared libpng****
-  fixed png_filler() declarations
-  fixed? background color conversions
-  fixed order of error function pointers to match documentation
-  current chunk name is now available in png_struct to reduce the number
-     of nearly identical error messages (will simplify multi-lingual
-     support when available)
-  try to get ready for unknown-chunk callback functions:
-     - previously read critical chunks are flagged, so the chunk handling
-       routines can determine if the chunk is in the right place
-     - all chunk handling routines have the same prototypes, so we will
-       be able to handle all chunks via a callback mechanism
-  try to fix Linux "setjmp" buffer size problems
-  removed png_large_malloc, png_large_free, and png_realloc functions.
-
-version 0.95 [March, 1997]
-  fixed bug in pngwutil.c allocating "up_row" twice and "avg_row" never
-  fixed bug in PNG file signature compares when start != 0
-  changed parameter type of png_set_filler(...filler...) from png_byte
-     to png_uint_32
-  added test for MACOS to ensure that both math.h and fp.h are not #included
-  added macros for libpng to be compiled as a Windows DLL (Andreas Kupries)
-  added "packswap" transformation, which changes the endianness of
-     packed-pixel bytes (Kevin Bracey)
-  added "strip_alpha" transformation, which removes the alpha channel of
-     input images without using it (not necessarily a good idea)
-  added "swap_alpha" transformation, which puts the alpha channel in front
-     of the color bytes instead of after
-  removed all implicit variable tests which assume NULL == 0 (I think)
-  changed several variables to "png_size_t" to show 16/32-bit limitations
-  added new pCAL chunk read/write support
-  added experimental filter selection weighting (Greg Roelofs)
-  removed old png_set_rgbx() and png_set_xrgb() functions that have been
-     obsolete for about 2 years now (use png_set_filler() instead)
-  added macros to read 16- and 32-bit ints directly from buffer, to be
-     used only on those systems that support it (namely PowerPC and 680x0)
-     With some testing, this may become the default for MACOS/PPC systems.
-  only calculate CRC on data if we are going to use it
-  added macros for zTXt compression type PNG_zTXt_COMPRESSION_???
-  added macros for simple libpng debugging output selectable at compile time
-  removed PNG_READ_END_MODE in progressive reader (Smarasderagd)
-  more description of info_struct in libpng.txt and png.h
-  more instructions in example.c
-  more chunk types tested in pngtest.c
-  renamed pngrcb.c to pngset.c, and all png_read_<chunk> functions to be
-     png_set_<chunk>.  We now have corresponding png_get_<chunk>
-     functions in pngget.c to get information in info_ptr.  This isolates
-     the application from the internal organization of png_info_struct
-     (good for shared library implementations).
-
-version 0.96 [May, 1997]
-  fixed serious bug with < 8bpp images introduced in 0.95
-  fixed 256-color transparency bug (Greg Roelofs)
-  fixed up documentation (Greg Roelofs, Laszlo Nyul)
-  fixed "error" in pngconf.h for Linux setjmp() behaviour
-  fixed DOS medium model support (Tim Wegner)
-  fixed png_check_keyword() for case with error in static string text
-  added read of CRC after IEND chunk for embedded PNGs (Laszlo Nyul)
-  added typecasts to quiet compiler errors
-  added more debugging info
-
-version 0.97 [January, 1998]
-  removed PNG_USE_OWN_CRC capability
-  relocated png_set_crc_action from pngrutil.c to pngrtran.c
-  fixed typecasts of "new_key", etc. (Andreas Dilger)
-  added RFC 1152 [sic] date support
-  fixed bug in gamma handling of 4-bit grayscale
-  added 2-bit grayscale gamma handling (Glenn R-P)
-  added more typecasts. 65536L becomes (png_uint_32)65536L, etc. (Glenn R-P)
-  minor corrections in libpng.txt
-  added simple sRGB support (Glenn R-P)
-  easier conditional compiling, e.g. define PNG_READ/WRITE_NOT_FULLY_SUPPORTED;
-     all configurable options can be selected from command-line instead
-     of having to edit pngconf.h (Glenn R-P)
-  fixed memory leak in pngwrite.c (free info_ptr->text) (Glenn R-P)
-  added more conditions for png_do_background, to avoid changing
-     black pixels to background when a background is supplied and
-     no pixels are transparent
-  repaired PNG_NO_STDIO behaviour
-  tested NODIV support and made it default behaviour (Greg Roelofs)
-  added "-m" option and PNGTEST_DEBUG_MEMORY to pngtest (John Bowler)
-  regularized version numbering scheme and bumped shared-library major
-     version number to 2 to avoid problems with libpng 0.89 apps (Greg Roelofs)
-
-version 0.98 [January, 1998]
-  cleaned up some typos in libpng.txt and in code documentation
-  fixed memory leaks in pCAL chunk processing (Glenn R-P and John Bowler)
-  cosmetic change "display_gamma" to "screen_gamma" in pngrtran.c
-  changed recommendation about file_gamma for PC images to .51 from .45,
-     in example.c and libpng.txt, added comments to distinguish between
-     screen_gamma, viewing_gamma, and display_gamma.
-  changed all references to RFC1152 to read RFC1123 and changed the
-     PNG_TIME_RFC1152_SUPPORTED macro to PNG_TIME_RFC1123_SUPPORTED
-  added png_invert_alpha capability (Glenn R-P -- suggestion by Jon Vincent)
-  changed srgb_intent from png_byte to int to avoid compiler bugs
-
-version 0.99 [January 30, 1998]
-  free info_ptr->text instead of end_info_ptr->text in pngread.c (John Bowler)
-  fixed a longstanding "packswap" bug in pngtrans.c
-  fixed some inconsistencies in pngconf.h that prevented compiling with
-     PNG_READ_GAMMA_SUPPORTED and PNG_READ_hIST_SUPPORTED undefined
-  fixed some typos and made other minor rearrangement of libpng.txt (Andreas)
-  changed recommendation about file_gamma for PC images to .50 from .51 in
-     example.c and libpng.txt, and changed file_gamma for sRGB images to .45
-  added a number of functions to access information from the png structure
-     png_get_image_height(), etc. (Glenn R-P, suggestion by Brad Pettit)
-  added TARGET_MACOS similar to zlib-1.0.8
-  define PNG_ALWAYS_EXTERN when __MWERKS__ && WIN32 are defined
-  added type casting to all png_malloc() function calls
-version 0.99a [January 31, 1998]
-  Added type casts and parentheses to all returns that return a value.(Tim W.)
-version 0.99b [February 4, 1998]
-  Added type cast png_uint_32 on malloc function calls where needed.
-  Changed type of num_hist from png_uint_32 to int (same as num_palette).
-  Added checks for rowbytes overflow, in case png_size_t is less than 32 bits.
-  Renamed makefile.elf to makefile.lnx.
-version 0.99c [February 7, 1998]
-  More type casting.  Removed erroneous overflow test in pngmem.c.
-  Added png_buffered_memcpy() and png_buffered_memset(), apply them to rowbytes.
-  Added UNIX manual pages libpng.3 (incorporating libpng.txt) and  png.5.
-version 0.99d [February 11, 1998]
-  Renamed "far_to_near()" "png_far_to_near()"
-  Revised libpng.3
-  Version 99c "buffered" operations didn't work as intended.  Replaced them
-    with png_memcpy_check() and png_memset_check().
-  Added many "if (png_ptr == NULL) return" to quell compiler warnings about
-    unused png_ptr, mostly in pngget.c and pngset.c.
-  Check for overlength tRNS chunk present when indexed-color PLTE is read.
-  Cleaned up spelling errors in libpng.3/libpng.txt
-  Corrected a problem with png_get_tRNS() which returned undefined trans array
-version 0.99e [February 28, 1998]
-  Corrected png_get_tRNS() again.
-  Add parentheses for easier reading of pngget.c, fixed "||" should be "&&".
-  Touched up example.c to make more of it compileable, although the entire
-    file still can't be compiled (Willem van Schaik)
-  Fixed a bug in png_do_shift() (Bryan Tsai)
-  Added a space in png.h prototype for png_write_chunk_start()
-  Replaced pngtest.png with one created with zlib 1.1.1
-  Changed pngtest to report PASS even when file size is different (Jean-loup G.)
-  Corrected some logic errors in png_do_invert_alpha() (Chris Patterson)
-version 0.99f [March 5, 1998]
-  Corrected a bug in pngpread() introduced in version 99c (Kevin Bracey)
-  Moved makefiles into a "scripts" directory, and added INSTALL instruction file
-  Added makefile.os2 and pngos2.def (A. Zabolotny) and makefile.s2x (W. Sebok)
-  Added pointers to "note on libpng versions" in makefile.lnx and README
-  Added row callback feature when reading and writing nonprogressive rows
-     and added a test of this feature in pngtest.c
-  Added user transform callbacks, with test of the feature in pngtest.c
-version 0.99g [March 6, 1998, morning]
-  Minor changes to pngtest.c to suppress compiler warnings.
-  Removed "beta" language from documentation.
-version 0.99h [March 6, 1998, evening]
-  Minor changes to previous minor changes to pngtest.c
-  Changed PNG_READ_NOT_FULLY_SUPPORTED to PNG_READ_TRANSFORMS_NOT_SUPPORTED
-  and added PNG_PROGRESSIVE_READ_NOT_SUPPORTED macro
-  Added user transform capability
-
-version 1.00 [March 7, 1998]
-  Changed several typedefs in pngrutil.c
-  Added makefile.wat (Pawel Mrochen), updated makefile.tc3 (Willem van Schaik)
-  replaced "while(1)" with "for(;;)"
-  added PNGARG() to prototypes in pngtest.c and removed some prototypes
-  updated some of the makefiles (Tom Lane)
-  changed some typedefs (s_start, etc.) in pngrutil.c
-  fixed dimensions of "short_months" array in pngwrite.c
-  Replaced ansi2knr.c with the one from jpeg-v6
-
-version 1.0.0 [March 8, 1998]
-  Changed name from 1.00 to 1.0.0 (Adam Costello)
-  Added smakefile.ppc (with SCOPTIONS.ppc) for Amiga PPC (Andreas Kleinert)
-version 1.0.0a [March 9, 1998]
-  Fixed three bugs in pngrtran.c to make gamma+background handling consistent
-  (Greg Roelofs)
-  Changed format of the PNG_LIBPNG_VER integer to xyyzz instead of xyz
-  for major, minor, and bugfix releases.  This is 10001. (Adam Costello,
-  Tom Lane)
-  Make months range from 1-12 in png_convert_to_rfc1123
-version 1.0.0b [March 13, 1998]
-  Quieted compiler complaints about two empty "for" loops in pngrutil.c
-  Minor changes to makefile.s2x
-  Removed #ifdef/#endif around a png_free() in pngread.c
-
-version 1.0.1 [March 14, 1998]
-  Changed makefile.s2x to reduce security risk of using a relative pathname
-  Fixed some typos in the documentation (Greg).
-  Fixed a problem with value of "channels" returned by png_read_update_info()
-version 1.0.1a [April 21, 1998]
-  Optimized Paeth calculations by replacing abs() function calls with intrinsics
-  plus other loop optimizations. Improves avg decoding speed by about 20%.
-  Commented out i386istic "align" compiler flags in makefile.lnx.
-  Reduced the default warning level in some makefiles, to make them consistent.
-  Removed references to IJG and JPEG in the ansi2knr.c copyright statement.
-  Fixed a bug in png_do_strip_filler with XXRRGGBB => RRGGBB transformation.
-  Added grayscale and 16-bit capability to png_do_read_filler().
-  Fixed a bug in pngset.c, introduced in version 0.99c, that sets rowbytes
-    too large when writing an image with bit_depth < 8 (Bob Dellaca).
-  Corrected some bugs in the experimental weighted filtering heuristics.
-  Moved a misplaced pngrutil code block that truncates tRNS if it has more
-    than num_palette entries -- test was done before num_palette was defined.
-  Fixed a png_convert_to_rfc1123() bug that converts day 31 to 0 (Steve Eddins).
-  Changed compiler flags in makefile.wat for better optimization (Pawel Mrochen).
-version 1.0.1b [May 2, 1998]
-  Relocated png_do_gray_to_rgb() within png_do_read_transformations() (Greg).
-  Relocated the png_composite macros from pngrtran.c to png.h (Greg).
-  Added makefile.sco (contributed by Mike Hopkirk).
-  Fixed two bugs (missing definitions of "istop") introduced in libpng-1.0.1a.
-  Fixed a bug in pngrtran.c that would set channels=5 under some circumstances.
-  More work on the Paeth-filtering, achieving imperceptible speedup (A Kleinert).
-  More work on loop optimization which may help when compiled with C++ compilers.
-  Added warnings when people try to use transforms they've defined out.
-  Collapsed 4 "i" and "c" loops into single "i" loops in pngrtran and pngwtran.
-  Revised paragraph about png_set_expand() in libpng.txt and libpng.3 (Greg)
-version 1.0.1c [May 11, 1998]
-  Fixed a bug in pngrtran.c (introduced in libpng-1.0.1a) where the masks for
-    filler bytes should have been 0xff instead of 0xf.
-  Added max_pixel_depth=32 in pngrutil.c when using FILLER with palette images.
-  Moved PNG_WRITE_WEIGHTED_FILTER_SUPPORTED and PNG_WRITE_FLUSH_SUPPORTED
-    out of the PNG_WRITE_TRANSFORMS_NOT_SUPPORTED block of pngconf.h
-  Added "PNG_NO_WRITE_TRANSFORMS" etc., as alternatives for *_NOT_SUPPORTED,
-    for consistency, in pngconf.h
-  Added individual "ifndef PNG_NO_[CAPABILITY]" in pngconf.h to make it easier
-    to remove unwanted capabilities via the compile line
-  Made some corrections to grammar (which, it's) in documentation (Greg).
-  Corrected example.c, use of row_pointers in png_write_image().
-version 1.0.1d [May 24, 1998]
-  Corrected several statements that used side effects illegally in pngrutil.c
-    and pngtrans.c, that were introduced in version 1.0.1b
-  Revised png_read_rows() to avoid repeated if-testing for NULL (A Kleinert)
-  More corrections to example.c, use of row_pointers in png_write_image()
-    and png_read_rows().
-  Added pngdll.mak and pngdef.pas to scripts directory, contributed by
-    Bob Dellaca, to make a png32bd.dll with Borland C++ 4.5
-  Fixed error in example.c with png_set_text: num_text is 3, not 2 (Guido V.)
-  Changed several loops from count-down to count-up, for consistency.
-version 1.0.1e [June 6, 1998]
-  Revised libpng.txt and libpng.3 description of png_set_read|write_fn(), and
-    added warnings when people try to set png_read_fn and png_write_fn in
-    the same structure.
-  Added a test such that png_do_gamma will be done when num_trans==0
-    for truecolor images that have defined a background.  This corrects an
-    error that was introduced in libpng-0.90 that can cause gamma processing
-    to be skipped.
-  Added tests in png.h to include "trans" and "trans_values" in structures
-    when PNG_READ_BACKGROUND_SUPPORTED or PNG_READ_EXPAND_SUPPORTED is defined.
-  Add png_free(png_ptr->time_buffer) in png_destroy_read_struct()
-  Moved png_convert_to_rfc_1123() from pngwrite.c to png.c
-  Added capability for user-provided malloc_fn() and free_fn() functions,
-    and revised pngtest.c to demonstrate their use, replacing the
-    PNGTEST_DEBUG_MEM feature.
-  Added makefile.w32, for Microsoft C++ 4.0 and later (Tim Wegner).
-
-version 1.0.2 [June 14, 1998]
-  Fixed two bugs in makefile.bor .
-version 1.0.2a [December 30, 1998]
-  Replaced and extended code that was removed from png_set_filler() in 1.0.1a.
-  Fixed a bug in png_do_filler() that made it fail to write filler bytes in
-    the left-most pixel of each row (Kevin Bracey).
-  Changed "static pngcharp tIME_string" to "static char tIME_string[30]"
-    in pngtest.c (Duncan Simpson).
-  Fixed a bug in pngtest.c that caused pngtest to try to write a tIME chunk
-    even when no tIME chunk was present in the source file.
-  Fixed a problem in pngrutil.c: gray_to_rgb didn't always work with 16-bit.
-  Fixed a problem in png_read_push_finish_row(), which would not skip some
-    passes that it should skip, for images that are less than 3 pixels high.
-  Interchanged the order of calls to png_do_swap() and png_do_shift()
-    in pngwtran.c (John Cromer).
-  Added #ifdef PNG_DEBUG/#endif surrounding use of PNG_DEBUG in png.h .
-  Changed "bad adaptive filter type" from error to warning in pngrutil.c .
-  Fixed a documentation error about default filtering with 8-bit indexed-color.
-  Separated the PNG_NO_STDIO macro into PNG_NO_STDIO and PNG_NO_CONSOLE_IO
-    (L. Peter Deutsch).
-  Added png_set_rgb_to_gray() and png_get_rgb_to_gray_status() functions.
-  Added png_get_copyright() and png_get_header_version() functions.
-  Revised comments on png_set_progressive_read_fn() in libpng.txt and example.c
-  Added information about debugging in libpng.txt and libpng.3 .
-  Changed "ln -sf" to "ln -s -f" in makefile.s2x, makefile.lnx, and makefile.sco.
-  Removed lines after Dynamic Dependencies" in makefile.aco .
-  Revised makefile.dec to make a shared library (Jeremie Petit).
-  Removed trailing blanks from all files.
-version 1.0.2a [January 6, 1999]
-  Removed misplaced #endif and #ifdef PNG_NO_EXTERN near the end of png.h
-  Added "if" tests to silence complaints about unused png_ptr in png.h and png.c
-  Changed "check_if_png" function in example.c to return true (nonzero) if PNG.
-  Changed libpng.txt to demonstrate png_sig_cmp() instead of png_check_sig()
-    which is obsolete.
-
-version 1.0.3 [January 14, 1999]
-  Added makefile.hux, for Hewlett Packard HPUX 10.20 and 11.00 (Jim Rice)
-  Added a statement of Y2K compliance in png.h, libpng.3, and Y2KINFO.
-version 1.0.3a [August 12, 1999]
-  Added check for PNG_READ_INTERLACE_SUPPORTED in pngread.c; issue a warning
-     if an attempt is made to read an interlaced image when it's not supported.
-  Added check if png_ptr->trans is defined before freeing it in pngread.c
-  Modified the Y2K statement to include versions back to version 0.71
-  Fixed a bug in the check for valid IHDR bit_depth/color_types in pngrutil.c
-  Modified makefile.wat (added -zp8 flag, ".symbolic", changed some comments)
-  Replaced leading blanks with tab characters in makefile.hux
-  Changed "dworkin.wustl.edu" to "ccrc.wustl.edu" in various documents.
-  Changed (float)red and (float)green to (double)red, (double)green
-     in png_set_rgb_to_gray() to avoid "promotion" problems in AIX.
-  Fixed a bug in pngconf.h that omitted <stdio.h> when PNG_DEBUG==0 (K Bracey).
-  Reformatted libpng.3 and libpngpf.3 with proper fonts (script by J. vanZandt).
-  Updated documentation to refer to the PNG-1.2 specification.
-  Removed ansi2knr.c and left pointers to the latest source for ansi2knr.c
-    in makefile.knr, INSTALL, and README (L. Peter Deutsch)
-  Fixed bugs in calculation of the length of rowbytes when adding alpha
-    channels to 16-bit images, in pngrtran.c (Chris Nokleberg)
-  Added function png_set_user_transform_info() to store user_transform_ptr,
-    user_depth, and user_channels into the png_struct, and a function
-    png_get_user_transform_ptr() to retrieve the pointer (Chris Nokleberg)
-  Added function png_set_empty_plte_permitted() to make libpng useable
-    in MNG applications.
-  Corrected the typedef for png_free_ptr in png.h (Jesse Jones).
-  Correct gamma with srgb is 45455 instead of 45000 in pngrutil.c, to be
-    consistent with PNG-1.2, and allow variance of 500 before complaining.
-  Added assembler code contributed by Intel in file pngvcrd.c and modified
-    makefile.w32 to use it (Nirav Chhatrapati, INTEL Corporation, Gilles Vollant)
-  Changed "ln -s -f" to "ln -f -s" in the makefiles to make Solaris happy.
-  Added some aliases for png_set_expand() in pngrtran.c, namely
-    png_set_expand_PLTE(), png_set_expand_depth(), and png_set_expand_tRNS()
-    (Greg Roelofs, in "PNG: The Definitive Guide").
-  Added makefile.beo for BEOS on X86, contributed by Sander Stok.
-version 1.0.3b [August 26, 1999]
-  Replaced 2147483647L several places with PNG_MAX_UINT macro, defined in png.h
-  Changed leading blanks to tabs in all makefiles.
-  Define PNG_USE_PNGVCRD in makefile.w32, to get MMX assembler code.
-  Made alternate versions of  png_set_expand() in pngrtran.c, namely
-    png_set_gray_1_2_4_to_8, png_set_palette_to_rgb, and png_set_tRNS_to_alpha
-    (Greg Roelofs, in "PNG: The Definitive Guide").  Deleted the 1.0.3a aliases.
-  Relocated start of 'extern "C"' block in png.h so it doesn't include pngconf.h
-  Revised calculation of num_blocks in pngmem.c to avoid a potentially
-    negative shift distance, whose results are undefined in the C language.
-  Added a check in pngset.c to prevent writing multiple tIME chunks.
-  Added a check in pngwrite.c to detect invalid small window_bits sizes.
-version 1.0.3d [September 4, 1999]
-  Fixed type casting of igamma in pngrutil.c
-  Added new png_expand functions to scripts/pngdef.pas and pngos2.def
-  Added a demo read_user_transform_fn that examines the row filters in pngtest.c
-
-version 1.0.4 [September 24, 1999]
-  Define PNG_ALWAYS_EXTERN in pngconf.h if __STDC__ is defined
-  Delete #define PNG_INTERNAL and include "png.h" from pngasmrd.h
-  Made several minor corrections to pngtest.c
-  Renamed the makefiles with longer but more user friendly extensions.
-  Copied the PNG copyright and license to a separate LICENSE file.
-  Revised documentation, png.h, and example.c to remove reference to
-    "viewing_gamma" which no longer appears in the PNG specification.
-  Revised pngvcrd.c to use MMX code for interlacing only on the final pass.
-  Updated pngvcrd.c to use the faster C filter algorithms from libpng-1.0.1a
-  Split makefile.win32vc into two versions, makefile.vcawin32 (uses MMX
-    assembler code) and makefile.vcwin32 (doesn't).
-  Added a CPU timing report to pngtest.c (enabled by defining PNGTEST_TIMING)
-  Added a copy of pngnow.png to the distribution.
-version 1.0.4a [September 25, 1999]
-  Increase max_pixel_depth in pngrutil.c if a user transform needs it.
-  Changed several division operations to right-shifts in pngvcrd.c
-version 1.0.4b [September 30, 1999]
-  Added parentheses in line 3732 of pngvcrd.c
-  Added a comment in makefile.linux warning about buggy -O3 in pgcc 2.95.1
-version 1.0.4c [October 1, 1999]
-  Added a "png_check_version" function in png.c and pngtest.c that will generate
-    a helpful compiler error if an old png.h is found in the search path.
-  Changed type of png_user_transform_depth|channels from int to png_byte.
-version 1.0.4d [October 6, 1999]
-  Changed 0.45 to 0.45455 in png_set_sRGB()
-  Removed unused PLTE entries from pngnow.png
-  Re-enabled some parts of pngvcrd.c (png_combine_row) that work properly.
-version 1.0.4e [October 10, 1999]
-  Fixed sign error in pngvcrd.c (Greg Roelofs)
-  Replaced some instances of memcpy with simple assignments in pngvcrd (GR-P)
-version 1.0.4f [October 15, 1999]
-  Surrounded example.c code with #if 0 .. #endif to prevent people from
-    inadvertently trying to compile it.
-  Changed png_get_header_version() from a function to a macro in png.h
-  Added type casting mostly in pngrtran.c and pngwtran.c
-  Removed some pointless "ptr = NULL" in pngmem.c
-  Added a "contrib" directory containing the source code from Greg's book.
-
-version 1.0.5 [October 15, 1999]
-  Minor editing of the INSTALL and README files.
-version 1.0.5a [October 23, 1999]
-  Added contrib/pngsuite and contrib/pngminus (Willem van Schaik)
-  Fixed a typo in the png_set_sRGB() function call in example.c (Jan Nijtmans)
-  Further optimization and bugfix of pngvcrd.c
-  Revised pngset.c so that it does not allocate or free memory in the user's
-    text_ptr structure.  Instead, it makes its own copy.
-  Created separate write_end_info_struct in pngtest.c for a more severe test.
-  Added code in pngwrite.c to free info_ptr->text[i].key to stop a memory leak.
-version 1.0.5b [November 23, 1999]
-  Moved PNG_FLAG_HAVE_CHUNK_HEADER, PNG_FLAG_BACKGROUND_IS_GRAY and
-    PNG_FLAG_WROTE_tIME from flags to mode.
-  Added png_write_info_before_PLTE() function.
-  Fixed some typecasting in contrib/gregbook/*.c
-  Updated scripts/makevms.com and added makevms.com to contrib/gregbook
-    and contrib/pngminus (Martin Zinser)
-version 1.0.5c [November 26, 1999]
-  Moved png_get_header_version from png.h to png.c, to accommodate ansi2knr.
-  Removed all global arrays (according to PNG_NO_GLOBAL_ARRAYS macro), to
-    accommodate making DLL's: Moved usr_png_ver from global variable to function
-    png_get_header_ver() in png.c.  Moved png_sig to png_sig_bytes in png.c and
-    eliminated use of png_sig in pngwutil.c.  Moved the various png_CHNK arrays
-    into pngtypes.h.  Eliminated use of global png_pass arrays.  Declared the
-    png_CHNK and png_pass arrays to be "const".  Made the global arrays
-    available to applications (although none are used in libpng itself) when
-    PNG_NO_GLOBAL_ARRAYS is not defined or when PNG_GLOBAL_ARRAYS is defined.
-  Removed some extraneous "-I" from contrib/pngminus/makefile.std
-  Changed the PNG_sRGB_INTENT macros in png.h to be consistent with PNG-1.2.
-  Change PNG_SRGB_INTENT to PNG_sRGB_INTENT in libpng.txt and libpng.3
-version 1.0.5d [November 29, 1999]
-  Add type cast (png_const_charp) two places in png.c
-  Eliminated pngtypes.h; use macros instead to declare PNG_CHNK arrays.
-  Renamed "PNG_GLOBAL_ARRAYS" to "PNG_USE_GLOBAL_ARRAYS" and made available
-    to applications a macro "PNG_USE_LOCAL_ARRAYS".
-  comment out (with #ifdef) all the new declarations when
-    PNG_USE_GLOBAL_ARRAYS is defined.
-  Added PNG_EXPORT_VAR macro to accommodate making DLL's.
-version 1.0.5e [November 30, 1999]
-  Added iCCP, iTXt, and sPLT support; added "lang" member to the png_text
-    structure; refactored the inflate/deflate support to make adding new chunks
-    with trailing compressed parts easier in the future, and added new functions
-    png_free_iCCP, png_free_pCAL, png_free_sPLT, png_free_text, png_get_iCCP,
-    png_get_spalettes, png_set_iCCP, png_set_spalettes (Eric S. Raymond).
-  NOTE: Applications that write text chunks MUST define png_text->lang
-    before calling png_set_text(). It must be set to NULL if you want to
-    write tEXt or zTXt chunks.  If you want your application to be able to
-    run with older versions of libpng, use
-
-      #ifdef PNG_iTXt_SUPPORTED
-         png_text[i].lang = NULL;
-      #endif
-
-  Changed png_get_oFFs() and png_set_oFFs() to use signed rather than unsigned
-    offsets (Eric S. Raymond).
-  Combined PNG_READ_cHNK_SUPPORTED and PNG_WRITE_cHNK_SUPPORTED macros into
-    PNG_cHNK_SUPPORTED and combined the three types of PNG_text_SUPPORTED
-    macros, leaving the separate macros also available.
-  Removed comments on #endifs at the end of many short, non-nested #if-blocks.
-version 1.0.5f [December 6, 1999]
-  Changed makefile.solaris to issue a warning about potential problems when
-    the ucb "ld" is in the path ahead of the ccs "ld".
-  Removed "- [date]" from the "synopsis" line in libpng.3 and libpngpf.3.
-  Added sCAL chunk support (Eric S. Raymond).
-version 1.0.5g [December 7, 1999]
-  Fixed "png_free_spallettes" typo in png.h
-  Added code to handle new chunks in pngpread.c
-  Moved PNG_CHNK string macro definitions outside of PNG_NO_EXTERN block
-  Added "translated_key" to png_text structure and png_write_iTXt().
-  Added code in pngwrite.c to work around a newly discovered zlib bug.
-version 1.0.5h [December 10, 1999]
-  NOTE: regarding the note for version 1.0.5e, the following must also
-    be included in your code:
-        png_text[i].translated_key = NULL;
-  Unknown chunk handling is now supported.
-  Option to eliminate all floating point support was added.  Some new
-    fixed-point functions such as png_set_gAMA_fixed() were added.
-  Expanded tabs and removed trailing blanks in source files.
-version 1.0.5i [December 13, 1999]
-  Added some type casts to silence compiler warnings.
-  Renamed "png_free_spalette" to "png_free_spalettes" for consistency.
-  Removed leading blanks from a #define in pngvcrd.c
-  Added some parameters to the new png_set_keep_unknown_chunks() function.
-  Added a test for up->location != 0 in the first instance of writing
-    unknown chunks in pngwrite.c
-  Changed "num" to "i" in png_free_spalettes() and png_free_unknowns() to
-    prevent recursion.
-  Added png_free_hIST() function.
-  Various patches to fix bugs in the sCAL and integer cHRM processing,
-    and to add some convenience macros for use with sCAL.
-version 1.0.5j [December 21, 1999]
-  Changed "unit" parameter of png_write_sCAL from png_byte to int, to work
-    around buggy compilers.
-  Added new type "png_fixed_point" for integers that hold float*100000 values
-  Restored backward compatibility of tEXt/zTXt chunk processing:
-    Restored the first four members of png_text to the same order as v.1.0.5d.
-    Added members "lang_key" and "itxt_length" to png_text struct.  Set
-    text_length=0 when "text" contains iTXt data.  Use the "compression"
-    member to distinguish among tEXt/zTXt/iTXt types.  Added
-    PNG_ITXT_COMPRESSION_NONE (1) and PNG_ITXT_COMPRESSION_zTXt(2) macros.
-    The "Note" above, about backward incompatibility of libpng-1.0.5e, no
-    longer applies.
-  Fixed png_read|write_iTXt() to read|write parameters in the right order,
-    and to write the iTXt chunk after IDAT if it appears in the end_ptr.
-  Added pnggccrd.c, version of pngvcrd.c Intel assembler for gcc (Greg Roelofs)
-  Reversed the order of trying to write floating-point and fixed-point gAMA.
-version 1.0.5k [December 27, 1999]
-  Added many parentheses, e.g., "if (a && b & c)" becomes "if (a && (b & c))"
-  Added png_handle_as_unknown() function (Glenn)
-  Added png_free_chunk_list() function and chunk_list and num_chunk_list members
-    of png_ptr.
-  Eliminated erroneous warnings about multiple sPLT chunks and sPLT-after-PLTE.
-  Fixed a libpng-1.0.5h bug in pngrutil.c that was issuing erroneous warnings
-    about ignoring incorrect gAMA with sRGB (gAMA was in fact not ignored)
-  Added png_free_tRNS(); png_set_tRNS() now malloc's its own trans array (ESR).
-  Define png_get_int_32 when oFFs chunk is supported as well as when pCAL is.
-  Changed type of proflen from png_int_32 to png_uint_32 in png_get_iCCP().
-version 1.0.5l [January 1, 2000]
-  Added functions png_set_read_user_chunk_fn() and png_get_user_chunk_ptr()
-    for setting a callback function to handle unknown chunks and for
-    retrieving the associated user pointer (Glenn).
-version 1.0.5m [January 7, 2000]
-  Added high-level functions png_read_png(), png_write_png(), png_free_pixels().
-version 1.0.5n [January 9, 2000]
-  Added png_free_PLTE() function, and modified png_set_PLTE() to malloc its
-    own memory for info_ptr->palette.  This makes it safe for the calling
-    application to free its copy of the palette any time after it calls
-    png_set_PLTE().
-version 1.0.5o [January 20, 2000]
-  Cosmetic changes only (removed some trailing blanks and TABs)
-version 1.0.5p [January 31, 2000]
-  Renamed pngdll.mak to makefile.bd32
-  Cosmetic changes in pngtest.c
-version 1.0.5q [February 5, 2000]
-  Relocated the makefile.solaris warning about PATH problems.
-  Fixed pngvcrd.c bug by pushing/popping registers in mmxsupport (Bruce Oberg)
-  Revised makefile.gcmmx
-  Added PNG_SETJMP_SUPPORTED, PNG_SETJMP_NOT_SUPPORTED, and PNG_ABORT() macros
-version 1.0.5r [February 7, 2000]
-  Removed superfluous prototype for png_get_itxt from png.h
-  Fixed a bug in pngrtran.c that improperly expanded the background color.
-  Return *num_text=0 from png_get_text() when appropriate, and fix documentation
-    of png_get_text() in libpng.txt/libpng.3.
-version 1.0.5s [February 18, 2000]
-  Added "png_jmp_env()" macro to pngconf.h, to help people migrate to the
-    new error handler that's planned for the next libpng release, and changed
-    example.c, pngtest.c, and contrib programs to use this macro.
-  Revised some of the DLL-export macros in pngconf.h (Greg Roelofs)
-  Fixed a bug in png_read_png() that caused it to fail to expand some images
-    that it should have expanded.
-  Fixed some mistakes in the unused and undocumented INCH_CONVERSIONS functions
-    in pngget.c
-  Changed the allocation of palette, history, and trans arrays back to
-    the version 1.0.5 method (linking instead of copying) which restores
-    backward compatibility with version 1.0.5.  Added some remarks about
-    that in example.c.  Added "free_me" member to info_ptr and png_ptr
-    and added png_free_data() function.
-  Updated makefile.linux and makefile.gccmmx to make directories conditionally.
-  Made cosmetic changes to pngasmrd.h
-  Added png_set_rows() and png_get_rows(), for use with png_read|write_png().
-  Modified png_read_png() to allocate info_ptr->row_pointers only if it
-    hasn't already been allocated.
-version 1.0.5t [March 4, 2000]
-  Changed png_jmp_env() migration aiding macro to png_jmpbuf().
-  Fixed "interlace" typo (should be "interlaced") in contrib/gregbook/read2-x.c
-  Fixed bug with use of PNG_BEFORE_IHDR bit in png_ptr->mode, introduced when
-    PNG_FLAG_HAVE_CHUNK_HEADER was moved into png_ptr->mode in version 1.0.5b
-  Files in contrib/gregbook were revised to use png_jmpbuf() and to select
-    a 24-bit visual if one is available, and to allow abbreviated options.
-  Files in contrib/pngminus were revised to use the png_jmpbuf() macro.
-  Removed spaces in makefile.linux and makefile.gcmmx, introduced in 1.0.5s
-version 1.0.5u [March 5, 2000]
-  Simplified the code that detects old png.h in png.c and pngtest.c
-  Renamed png_spalette (_p, _pp) to png_sPLT_t (_tp, _tpp)
-  Increased precision of rgb_to_gray calculations from 8 to 15 bits and
-    added png_set_rgb_to_gray_fixed() function.
-  Added makefile.bc32 (32-bit Borland C++, C mode)
-version 1.0.5v [March 11, 2000]
-  Added some parentheses to the png_jmpbuf macro definition.
-  Updated references to the zlib home page, which has moved to freesoftware.com.
-  Corrected bugs in documentation regarding png_read_row() and png_write_row().
-  Updated documentation of png_rgb_to_gray calculations in libpng.3/libpng.txt.
-  Renamed makefile.borland,turboc3 back to makefile.bor,tc3 as in version 1.0.3,
-    revised borland makefiles; added makefile.ibmvac3 and makefile.gcc (Cosmin)
-
-version 1.0.6 [March 20, 2000]
-  Minor revisions of makefile.bor, libpng.txt, and gregbook/rpng2-win.c
-  Added makefile.sggcc (SGI IRIX with gcc)
-version 1.0.6d [April 7, 2000]
-  Changed sprintf() to strcpy() in png_write_sCAL_s() to work without STDIO
-  Added data_length parameter to png_decompress_chunk() function
-  Revised documentation to remove reference to abandoned png_free_chnk functions
-  Fixed an error in png_rgb_to_gray_fixed()
-  Revised example.c, usage of png_destroy_write_struct().
-  Renamed makefile.ibmvac3 to makefile.ibmc, added libpng.icc IBM project file
-  Added a check for info_ptr->free_me&PNG_FREE_TEXT when freeing text in png.c
-  Simplify png_sig_bytes() function to remove use of non-ISO-C strdup().
-version 1.0.6e [April 9, 2000]
-  Added png_data_freer() function.
-  In the code that checks for over-length tRNS chunks, added check of
-    info_ptr->num_trans as well as png_ptr->num_trans (Matthias Benckmann)
-  Minor revisions of libpng.txt/libpng.3.
-  Check for existing data and free it if the free_me flag is set, in png_set_*()
-    and png_handle_*().
-  Only define PNG_WEIGHTED_FILTERS_SUPPORTED when PNG_FLOATING_POINT_SUPPORTED
-    is defined.
-  Changed several instances of PNG_NO_CONSOLE_ID to PNG_NO_STDIO in pngrutil.c
-    and mentioned the purposes of the two macros in libpng.txt/libpng.3.
-version 1.0.6f [April 14, 2000]
-  Revised png_set_iCCP() and png_set_rows() to avoid prematurely freeing data.
-  Add checks in png_set_text() for NULL members of the input text structure.
-  Revised libpng.txt/libpng.3.
-  Removed superfluous prototype for png_set_itxt from png.h
-  Removed "else" from pngread.c, after png_error(), and changed "0" to "length".
-  Changed several png_errors about malformed ancillary chunks to png_warnings.
-version 1.0.6g [April 24, 2000]
-  Added png_pass-* arrays to pnggccrd.c when PNG_USE_LOCAL_ARRAYS is defined.
-  Relocated paragraph about png_set_background() in libpng.3/libpng.txt
-    and other revisions (Matthias Benckmann)
-  Relocated info_ptr->free_me, png_ptr->free_me, and other info_ptr and
-    png_ptr members to restore binary compatibility with libpng-1.0.5
-    (breaks compatibility with libpng-1.0.6).
-version 1.0.6h [April 24, 2000]
-  Changed shared library so-number pattern from 2.x.y.z to xy.z (this builds
-    libpng.so.10 & libpng.so.10.6h instead of libpng.so.2 & libpng.so.2.1.0.6h)
-    This is a temporary change for test purposes.
-version 1.0.6i [May 2, 2000]
-  Rearranged some members at the end of png_info and png_struct, to put
-    unknown_chunks_num and free_me within the original size of the png_structs
-    and free_me, png_read_user_fn, and png_free_fn within the original png_info,
-    because some old applications allocate the structs directly instead of
-    using png_create_*().
-  Added documentation of user memory functions in libpng.txt/libpng.3
-  Modified png_read_png so that it will use user_allocated row_pointers
-    if present, unless free_me directs that it be freed, and added description
-    of the use of png_set_rows() and png_get_rows() in libpng.txt/libpng.3.
-  Added PNG_LEGACY_SUPPORTED macro, and #ifdef out all new (since version
-    1.00) members of png_struct and png_info, to regain binary compatibility
-    when you define this macro.  Capabilities lost in this event
-    are user transforms (new in version 1.0.0),the user transform pointer
-    (new in version 1.0.2), rgb_to_gray (new in 1.0.5), iCCP, sCAL, sPLT,
-    the high-level interface, and unknown chunks support (all new in 1.0.6).
-    This was necessary because of old applications that allocate the structs
-    directly as authors were instructed to do in libpng-0.88 and earlier,
-    instead of using png_create_*().
-  Added modes PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT which
-    can be used to detect codes that directly allocate the structs, and
-    code to check these modes in png_read_init() and png_write_init() and
-    generate a libpng error if the modes aren't set and PNG_LEGACY_SUPPORTED
-    was not defined.
-  Added makefile.intel and updated makefile.watcom (Pawel Mrochen)
-version 1.0.6j [May 3, 2000]
-  Overloaded png_read_init() and png_write_init() with macros that convert
-    calls to png_read_init_2() or png_write_init_2() that check the version
-    and structure sizes.
-version 1.0.7beta11 [May 7, 2000]
-  Removed the new PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT modes
-    which are no longer used.
-  Eliminated the three new members of png_text when PNG_LEGACY_SUPPORTED is
-    defined or when neither PNG_READ_iTXt_SUPPORTED nor PNG_WRITE_iTXT_SUPPORTED
-    is defined.
-  Made PNG_NO_READ|WRITE_iTXt the default setting, to avoid memory
-    overrun when old applications fill the info_ptr->text structure directly.
-  Added PNGAPI macro, and added it to the definitions of all exported functions.
-  Relocated version macro definitions ahead of the includes of zlib.h and
-    pngconf.h in png.h.
-version 1.0.7beta12 [May 12, 2000]
-  Revised pngset.c to avoid a problem with expanding the png_debug macro.
-  Deleted some extraneous defines from pngconf.h
-  Made PNG_NO_CONSOLE_IO the default condition when PNG_BUILD_DLL is defined.
-  Use MSC _RPTn debugging instead of fprintf if _MSC_VER is defined.
-  Added png_access_version_number() function.
-  Check for mask&PNG_FREE_CHNK (for TEXT, SCAL, PCAL) in png_free_data().
-  Expanded libpng.3/libpng.txt information about png_data_freer().
-version 1.0.7beta14 [May 17, 2000] (beta13 was not published)
-  Changed pnggccrd.c and pngvcrd.c to handle bad adaptive filter types as
-    warnings instead of errors, as pngrutil.c does.
-  Set the PNG_INFO_IDAT valid flag in png_set_rows() so png_write_png()
-    will actually write IDATs.
-  Made the default PNG_USE_LOCAL_ARRAYS depend on PNG_DLL instead of WIN32.
-  Make png_free_data() ignore its final parameter except when freeing data
-    that can have multiple instances (text, sPLT, unknowns).
-  Fixed a new bug in png_set_rows().
-  Removed info_ptr->valid tests from png_free_data(), as in version 1.0.5.
-  Added png_set_invalid() function.
-  Fixed incorrect illustrations of png_destroy_write_struct() in example.c.
-version 1.0.7beta15 [May 30, 2000]
-  Revised the deliberately erroneous Linux setjmp code in pngconf.h to produce
-    fewer error messages.
-  Rearranged checks for Z_OK to check the most likely path first in pngpread.c
-    and pngwutil.c.
-  Added checks in pngtest.c for png_create_*() returning NULL, and mentioned
-    in libpng.txt/libpng.3 the need for applications to check this.
-  Changed names of png_default_*() functions in pngtest to pngtest_*().
-  Changed return type of png_get_x|y_offset_*() from png_uint_32 to png_int_32.
-  Fixed some bugs in the unused PNG_INCH_CONVERSIONS functions in pngget.c
-  Set each pointer to NULL after freeing it in png_free_data().
-  Worked around a problem in pngconf.h; AIX's strings.h defines an "index"
-    macro that conflicts with libpng's png_color_16.index. (Dimitri Papadapoulos)
-  Added "msvc" directory with MSVC++ project files (Simon-Pierre Cadieux).
-version 1.0.7beta16 [June 4, 2000]
-  Revised the workaround of AIX string.h "index" bug.
-  Added a check for overlength PLTE chunk in pngrutil.c.
-  Added PNG_NO_POINTER_INDEXING macro to use array-indexing instead of pointer
-    indexing in pngrutil.c and pngwutil.c to accommodate a buggy compiler.
-  Added a warning in png_decompress_chunk() when it runs out of data, e.g.
-    when it tries to read an erroneous PhotoShop iCCP chunk.
-  Added PNG_USE_DLL macro.
-  Revised the copyright/disclaimer/license notice.
-  Added contrib/msvctest directory
-version 1.0.7rc1 [June 9, 2000]
-  Corrected the definition of PNG_TRANSFORM_INVERT_ALPHA  (0x0400 not 0x0200)
-  Added contrib/visupng directory (Willem van Schaik)
-version 1.0.7beta18 [June 23, 2000]
-  Revised PNGAPI definition, and pngvcrd.c to work with __GCC__
-    and do not redefine PNGAPI if it is passed in via a compiler directive.
-  Revised visupng/PngFile.c to remove returns from within the Try block.
-  Removed leading underscores from "_PNG_H" and "_PNG_SAVE_BSD_SOURCE" macros.
-  Updated contrib/visupng/cexcept.h to version 1.0.0.
-  Fixed bugs in pngwrite.c and pngwutil.c that prevented writing iCCP chunks.
-version 1.0.7rc2 [June 28, 2000]
-  Updated license to include disclaimers required by UCITA.
-  Fixed "DJBPP" typo in pnggccrd.c introduced in beta18.
-
-version 1.0.7 [July 1, 2000]
-  Revised the definition of "trans_values" in libpng.3/libpng.txt
-version 1.0.8beta1 [July 8, 2000]
-  Added png_free(png_ptr, key) two places in pngpread.c to stop memory leaks.
-  Changed PNG_NO_STDIO to PNG_NO_CONSOLE_IO, several places in pngrutil.c and
-     pngwutil.c.
-  Changed PNG_EXPORT_VAR to use PNG_IMPEXP, in pngconf.h.
-  Removed unused "#include <assert.h>" from png.c
-  Added WindowsCE support.
-  Revised pnggccrd.c to work with gcc-2.95.2 and in the Cygwin environment.
-version 1.0.8beta2 [July 10, 2000]
-  Added project files to the wince directory and made further revisions
-     of pngtest.c, pngrio.c, and pngwio.c in support of WindowsCE.
-version 1.0.8beta3 [July 11, 2000]
-  Only set the PNG_FLAG_FREE_TRNS or PNG_FREE_TRNS flag in png_handle_tRNS()
-     for indexed-color input files to avoid potential double-freeing trans array
-     under some unusual conditions; problem was introduced in version 1.0.6f.
-  Further revisions to pngtest.c and files in the wince subdirectory.
-version 1.0.8beta4 [July 14, 2000]
-  Added the files pngbar.png and pngbar.jpg to the distribution.
-  Added makefile.cygwin, and cygwin support in pngconf.h
-  Added PNG_NO_ZALLOC_ZERO macro (makes png_zalloc skip zeroing memory)
-version 1.0.8rc1 [July 16, 2000]
-  Revised png_debug() macros and statements to eliminate compiler warnings.
-
-version 1.0.8 [July 24, 2000]
-  Added png_flush() in pngwrite.c, after png_write_IEND().
-  Updated makefile.hpux to build a shared library.
-version 1.0.9beta1 [November 10, 2000]
-  Fixed typo in scripts/makefile.hpux
-  Updated makevms.com in scripts and contrib/* and contrib/* (Martin Zinser)
-  Fixed seqence-point bug in contrib/pngminus/png2pnm (Martin Zinser)
-  Changed "cdrom.com" in documentation to "libpng.org"
-  Revised pnggccrd.c to get it all working, and updated makefile.gcmmx (Greg).
-  Changed type of "params" from voidp to png_voidp in png_read|write_png().
-  Make sure PNGAPI and PNG_IMPEXP are defined in pngconf.h.
-  Revised the 3 instances of WRITEFILE in pngtest.c.
-  Relocated "msvc" and "wince" project subdirectories into "dll" subdirectory.
-  Updated png.rc in dll/msvc project
-  Revised makefile.dec to define and use LIBPATH and INCPATH
-  Increased size of global png_libpng_ver[] array from 12 to 18 chars.
-  Made global png_libpng_ver[], png_sig[] and png_pass_*[] arrays const.
-  Removed duplicate png_crc_finish() from png_handle_bKGD() function.
-  Added a warning when application calls png_read_update_info() multiple times.
-  Revised makefile.cygwin
-  Fixed bugs in iCCP support in pngrutil.c and pngwutil.c.
-  Replaced png_set_empty_plte_permitted() with png_permit_mng_features().
-version 1.0.9beta2 [November 19, 2000]
-  Renamed the "dll" subdirectory "projects".
-  Added borland project files to "projects" subdirectory.
-  Set VS_FF_PRERELEASE and VS_FF_PATCHED flags in msvc/png.rc when appropriate.
-  Add error message in png_set_compression_buffer_size() when malloc fails.
-version 1.0.9beta3 [November 23, 2000]
-  Revised PNG_LIBPNG_BUILD_TYPE macro in png.h, used in the msvc project.
-  Removed the png_flush() in pngwrite.c that crashes some applications
-    that don't set png_output_flush_fn.
-  Added makefile.macosx and makefile.aix to scripts directory.
-version 1.0.9beta4 [December 1, 2000]
-  Change png_chunk_warning to png_warning in png_check_keyword().
-  Increased the first part of msg buffer from 16 to 18 in png_chunk_error().
-version 1.0.9beta5 [December 15, 2000]
-  Added support for filter method 64 (for PNG datastreams embedded in MNG).
-version 1.0.9beta6 [December 18, 2000]
-  Revised png_set_filter() to accept filter method 64 when appropriate.
-  Added new PNG_HAVE_PNG_SIGNATURE bit to png_ptr->mode and use it to
-    help prevent applications from using MNG features in PNG datastreams.
-  Added png_permit_mng_features() function.
-  Revised libpng.3/libpng.txt.  Changed "filter type" to "filter method".
-version 1.0.9rc1 [December 23, 2000]
-  Revised test for PNG_HAVE_PNG_SIGNATURE in pngrutil.c
-  Fixed error handling of unknown compression type in png_decompress_chunk().
-  In pngconf.h, define __cdecl when _MSC_VER is defined.
-version 1.0.9beta7 [December 28, 2000]
-  Changed PNG_TEXT_COMPRESSION_zTXt to PNG_COMPRESSION_TYPE_BASE several places.
-  Revised memory management in png_set_hIST and png_handle_hIST in a backward
-    compatible manner.  PLTE and tRNS were revised similarly.
-  Revised the iCCP chunk reader to ignore trailing garbage.
-version 1.0.9beta8 [January 12, 2001]
-  Moved pngasmrd.h into pngconf.h.
-  Improved handling of out-of-spec garbage iCCP chunks generated by PhotoShop.
-version 1.0.9beta9 [January 15, 2001]
-  Added png_set_invalid, png_permit_mng_features, and png_mmx_supported to
-    wince and msvc project module definition files.
-  Minor revision of makefile.cygwin.
-  Fixed bug with progressive reading of narrow interlaced images in pngpread.c
-version 1.0.9beta10 [January 16, 2001]
-  Do not typedef png_FILE_p in pngconf.h when PNG_NO_STDIO is defined.
-  Fixed "png_mmx_supported" typo in project definition files.
-version 1.0.9beta11 [January 19, 2001]
-  Updated makefile.sgi to make shared library.
-  Removed png_mmx_support() function and disabled PNG_MNG_FEATURES_SUPPORTED
-    by default, for the benefit of DLL forward compatibility.  These will
-    be re-enabled in version 1.2.0.
-version 1.0.9rc2 [January 22, 2001]
-  Revised cygwin support.
-
-version 1.0.9 [January 31, 2001]
-  Added check of cygwin's ALL_STATIC in pngconf.h
-  Added "-nommx" parameter to contrib/gregbook/rpng2-win and rpng2-x demos.
-version 1.0.10beta1 [March 14, 2001]
-  Revised makefile.dec, makefile.sgi, and makefile.sggcc; added makefile.hpgcc.
-  Reformatted libpng.3 to eliminate bad line breaks.
-  Added checks for _mmx_supported in the read_filter_row function of pnggccrd.c
-  Added prototype for png_mmx_support() near the top of pnggccrd.c
-  Moved some error checking from png_handle_IHDR to png_set_IHDR.
-  Added PNG_NO_READ_SUPPORTED and PNG_NO_WRITE_SUPPORTED macros.
-  Revised png_mmx_support() function in pnggccrd.c
-  Restored version 1.0.8 PNG_WRITE_EMPTY_PLTE_SUPPORTED behavior in pngwutil.c
-  Fixed memory leak in contrib/visupng/PngFile.c
-  Fixed bugs in png_combine_row() in pnggccrd.c and pngvcrd.c (C version)
-  Added warnings when retrieving or setting gamma=0.
-  Increased the first part of msg buffer from 16 to 18 in png_chunk_warning().
-version 1.0.10rc1 [March 23, 2001]
-  Changed all instances of memcpy, strcpy, and strlen to png_memcpy, png_strcpy,
-    and png_strlen.
-  Revised png_mmx_supported() function in pnggccrd.c to return proper value.
-  Fixed bug in progressive reading (pngpread.c) with small images (height < 8).
-
-version 1.0.10 [March 30, 2001]
-  Deleted extraneous space (introduced in 1.0.9) from line 42 of makefile.cygwin
-  Added beos project files (Chris Herborth)
-version 1.0.11beta1 [April 3, 2001]
-  Added type casts on several png_malloc() calls (Dimitri Papadapoulos).
-  Removed a no-longer needed AIX work-around from pngconf.h
-  Changed several "//" single-line comments to C-style in pnggccrd.c
-version 1.0.11beta2 [April 11, 2001]
-  Removed PNGAPI from several functions whose prototypes did not have PNGAPI.
-  Updated scripts/pngos2.def
-version 1.0.11beta3 [April 14, 2001]
-  Added checking the results of many instances of png_malloc() for NULL
-version 1.0.11beta4 [April 20, 2001]
-  Undid the changes from version 1.0.11beta3.  Added a check for NULL return
-    from user's malloc_fn().
-  Removed some useless type casts of the NULL pointer.
-  Added makefile.netbsd
-
-version 1.0.11 [April 27, 2001]
-  Revised makefile.netbsd
-version 1.0.12beta1 [May 14, 2001]
-  Test for Windows platform in pngconf.h when including malloc.h (Emmanuel Blot)
-  Updated makefile.cygwin and handling of Cygwin's ALL_STATIC in pngconf.h
-  Added some never-to-be-executed code in pnggccrd.c to quiet compiler warnings.
-  Eliminated the png_error about apps using png_read|write_init().  Instead,
-    libpng will reallocate the png_struct and info_struct if they are too small.
-    This retains future binary compatibility for old applications written for
-    libpng-0.88 and earlier.
-version 1.2.0beta1 [May 6, 2001]
-  Bumped DLLNUM to 2.
-  Re-enabled PNG_MNG_FEATURES_SUPPORTED and enabled PNG_ASSEMBLER_CODE_SUPPORTED
-    by default.
-  Added runtime selection of MMX features.
-  Added png_set_strip_error_numbers function and related macros.
-version 1.2.0beta2 [May 7, 2001]
-  Finished merging 1.2.0beta1 with version 1.0.11
-  Added a check for attempts to read or write PLTE in grayscale PNG datastreams.
-version 1.2.0beta3 [May 17, 2001]
-  Enabled user memory function by default.
-  Modified png_create_struct so it passes user mem_ptr to user memory allocator.
-  Increased png_mng_features flag from png_byte to png_uint_32.
-  Bumped shared-library (so-number) and dll-number to 3.
-version 1.2.0beta4 [June 23, 2001]
-  Check for missing profile length field in iCCP chunk and free chunk_data
-     in case of truncated iCCP chunk.
-  Bumped shared-library number to 3 in makefile.sgi and makefile.sggcc
-  Bumped dll-number from 2 to 3 in makefile.cygwin
-  Revised contrib/gregbook/rpng*-x.c to avoid a memory leak and to exit cleanly
-     if user attempts to run it on an 8-bit display.
-  Updated contrib/gregbook
-  Use png_malloc instead of png_zalloc to allocate palette in pngset.c
-  Updated makefile.ibmc
-  Added some typecasts to eliminate gcc 3.0 warnings.  Changed prototypes
-     of png_write_oFFS width and height from png_uint_32 to png_int_32.
-  Updated example.c
-  Revised prototypes for png_debug_malloc and png_debug_free in pngtest.c
-version 1.2.0beta5 [August 8, 2001]
-  Revised contrib/gregbook
-  Revised makefile.gcmmx
-  Revised pnggccrd.c to conditionally compile some thread-unsafe code only
-     when PNG_THREAD_UNSAFE_OK is defined.
-  Added tests to prevent pngwutil.c from writing a bKGD or tRNS chunk with
-     value exceeding 2^bit_depth-1
-  Revised makefile.sgi and makefile.sggcc
-  Replaced calls to fprintf(stderr,...) with png_warning() in pnggccrd.c
-  Removed restriction that do_invert_mono only operate on 1-bit opaque files
-
-version 1.2.0 [September 1, 2001]
-  Changed a png_warning() to png_debug() in pnggccrd.c
-  Fixed contrib/gregbook/rpng-x.c, rpng2-x.c to avoid crash with XFreeGC().
-version 1.2.1beta1 [October 19, 2001]
-  Revised makefile.std in contrib/pngminus
-  Include background_1 in png_struct regardless of gamma support.
-  Revised makefile.netbsd and makefile.macosx, added makefile.darwin.
-  Revised example.c to provide more details about using row_callback().
-version 1.2.1beta2 [October 25, 2001]
-  Added type cast to each NULL appearing in a function call, except for
-    WINCE functions.
-  Added makefile.so9.
-version 1.2.1beta3 [October 27, 2001]
-  Removed type casts from all NULLs.
-  Simplified png_create_struct_2().
-version 1.2.1beta4 [November 7, 2001]
-  Revised png_create_info_struct() and png_creat_struct_2().
-  Added error message if png_write_info() was omitted.
-  Type cast NULLs appearing in function calls when _NO_PROTO or
-    PNG_TYPECAST_NULL is defined.
-version 1.2.1rc1 [November 24, 2001]
-  Type cast NULLs appearing in function calls except when PNG_NO_TYPECAST_NULL
-    is defined.
-  Changed typecast of "size" argument to png_size_t in pngmem.c calls to
-    the user malloc_fn, to agree with the prototype in png.h
-  Added a pop/push operation to pnggccrd.c, to preserve Eflag (Maxim Sobolev)
-  Updated makefile.sgi to recognize LIBPATH and INCPATH.
-  Updated various makefiles so "make clean" does not remove previous major
-    version of the shared library.
-version 1.2.1rc2 [December 4, 2001]
-  Always allocate 256-entry internal palette, hist, and trans arrays, to
-    avoid out-of-bounds memory reference caused by invalid PNG datastreams.
-  Added a check for prefix_length > data_length in iCCP chunk handler.
-
-version 1.2.1 [December 7, 2001]
-  None.
-version 1.2.2beta1 [February 22, 2002]
-  Fixed a bug with reading the length of iCCP profiles (Larry Reeves).
-  Revised makefile.linux, makefile.gcmmx, and makefile.sgi to generate
-    libpng.a, libpng12.so (not libpng.so.3), and libpng12/png.h
-  Revised makefile.darwin to remove "-undefined suppress" option.
-  Added checks for gamma and chromaticity values over 21474.83, which exceed
-    the limit for PNG unsigned 32-bit integers when encoded.
-  Revised calls to png_create_read_struct() and png_create_write_struct()
-    for simpler debugging.
-  Revised png_zalloc() so zlib handles errors (uses PNG_FLAG_MALLOC_NULL_MEM_OK)
-version 1.2.2beta2 [February 23, 2002]
-  Check chunk_length and idat_size for invalid (over PNG_MAX_UINT) lengths.
-  Check for invalid image dimensions in png_get_IHDR.
-  Added missing "fi;" in the install target of the SGI makefiles.
-  Added install-static to all makefiles that make shared libraries.
-  Always do gamma compensation when image is partially transparent.
-version 1.2.2beta3 [March 7, 2002]
-  Compute background.gray and background_1.gray even when color_type is RGB
-    in case image gets reduced to gray later.
-  Modified shared-library makefiles to install pkgconfig/libpngNN.pc.
-  Export (with PNGAPI) png_zalloc, png_zfree, and png_handle_as_unknown
-  Removed unused png_write_destroy_info prototype from png.h
-  Eliminated incorrect use of width_mmx from pnggccrd.c in pixel_bytes == 8 case
-  Added install-shared target to all makefiles that make shared libraries.
-  Stopped a double free of palette, hist, and trans when not using free_me.
-  Added makefile.32sunu for Sun Ultra 32 and makefile.64sunu for Sun Ultra 64.
-version 1.2.2beta4 [March 8, 2002]
-  Compute background.gray and background_1.gray even when color_type is RGB
-    in case image gets reduced to gray later (Jason Summers).
-  Relocated a misplaced /bin/rm in the "install-shared" makefile targets
-  Added PNG_1_0_X macro which can be used to build a 1.0.x-compatible library.
-version 1.2.2beta5 [March 26, 2002]
-  Added missing PNGAPI to several function definitions.
-  Check for invalid bit_depth or color_type in png_get_IHDR(), and
-    check for missing PLTE or IHDR in png_push_read_chunk() (Matthias Clasen).
-  Revised iTXt support to accept NULL for lang and lang_key.
-  Compute gamma for color components of background even when color_type is gray.
-  Changed "()" to "{}" in scripts/libpng.pc.in.
-  Revised makefiles to put png.h and pngconf.h only in $prefix/include/libpngNN
-  Revised makefiles to make symlink to libpng.so.NN in addition to libpngNN.so
-version 1.2.2beta6 [March 31, 2002]
-version 1.0.13beta1 [March 31, 2002]
-  Prevent png_zalloc() from trying to memset memory that it failed to acquire.
-  Add typecasts of PNG_MAX_UINT in pngset_cHRM_fixed() (Matt Holgate).
-  Ensure that the right function (user or default) is used to free the
-    png_struct after an error in png_create_read_struct_2().
-version 1.2.2rc1 [April 7, 2002]
-version 1.0.13rc1 [April 7, 2002]
-  Save the ebx register in pnggccrd.c (Sami Farin)
-  Add "mem_ptr = png_ptr->mem_ptr" in png_destroy_write_struct() (Paul Gardner).
-  Updated makefiles to put headers in include/libpng and remove old include/*.h.
-
-version 1.2.2 [April 15, 2002]
-version 1.0.13 [April 15, 2002]
-  Revised description of png_set_filter() in libpng.3/libpng.txt.
-  Revised makefile.netbsd and added makefile.neNNbsd and makefile.freebsd
-version 1.0.13patch01 [April 17, 2002]
-version 1.2.2patch01 [April 17, 2002]
-  Changed ${PNGMAJ}.${PNGVER} bug to ${PNGVER} in makefile.sgi and makefile.sggcc
-  Fixed VER -> PNGVER typo in makefile.macosx and added install-static to install
-  Added install: target to makefile.32sunu and makefile.64sunu
-version 1.0.13patch03 [April 18, 2002]
-version 1.2.2patch03 [April 18, 2002]
-  Revised 15 makefiles to link libpng.a to libpngNN.a and the include libpng
-  subdirectory to libpngNN subdirectory without the full pathname.
-  Moved generation of libpng.pc from "install" to "all" in 15 makefiles.
-version 1.2.3rc1 [April 28, 2002]
-  Added install-man target to 15 makefiles (Dimitri Papadopolous-Orfanos).
-  Added $(DESTDIR) feature to 24 makefiles (Tim Mooney)
-  Fixed bug with $prefix, should be $(prefix) in makefile.hpux.
-  Updated cygwin-specific portion of pngconf.h and revised makefile.cygwin
-  Added a link from libpngNN.pc to libpng.pc in 15 makefiles.
-  Added links from include/libpngNN/*.h to include/*.h in 24 makefiles.
-  Revised makefile.darwin to make relative links without full pathname.
-  Added setjmp() at the end of png_create_*_struct_2() in case user forgets
-    to put one in their application.
-  Restored png_zalloc() and png_zfree() prototypes to version 1.2.1 and
-    removed them from module definition files.
-version 1.2.3rc2 [May 1, 2002]
-  Fixed bug in reporting number of channels in pngget.c and pngset.c,
-    that was introduced in version 1.2.2beta5.
-  Exported png_zalloc(), png_zfree(), png_default_read(), png_default_write(),
-    png_default_flush(), and png_push_fill_buffer() and included them in
-    module definition files.
-  Added "libpng.pc" dependency to the "install-shared" target in 15 makefiles.
-version 1.2.3rc3 [May 1, 2002]
-  Revised prototype for png_default_flush()
-  Remove old libpng.pc and libpngNN.pc before installing new ones.
-version 1.2.3rc4 [May 2, 2002]
-  Typos in *.def files (png_default_read|write -> png_default_read|write_data)
-  In makefiles, changed rm libpng.NN.pc to rm libpngNN.pc
-  Added libpng-config and libpngNN-config and modified makefiles to install them.
-  Changed $(MANPATH) to $(DESTDIR)$(MANPATH) in makefiles
-  Added "Win32 DLL VB" configuration to projects/msvc/libpng.dsp
-version 1.2.3rc5 [May 11, 2002]
-  Changed "error" and "message" in prototypes to "error_message" and
-    "warning_message" to avoid namespace conflict.
-  Revised 15 makefiles to build libpng-config from libpng-config-*.in
-  Once more restored png_zalloc and png_zfree to regular nonexported form.
-  Restored png_default_read|write_data, png_default_flush, png_read_fill_buffer
-    to nonexported form, but with PNGAPI, and removed them from module def files.
-version 1.2.3rc6 [May 14, 2002]
-  Removed "PNGAPI" from png_zalloc() and png_zfree() in png.c
-  Changed "Gz" to "Gd" in projects/msvc/libpng.dsp and zlib.dsp.
-  Removed leftover libpng-config "sed" script from four makefiles.
-  Revised libpng-config creating script in 16 makefiles.
-
-version 1.2.3 [May 22, 2002]
-  Revised libpng-config target in makefile.cygwin.
-  Removed description of png_set_mem_fn() from documentation.
-  Revised makefile.freebsd.
-  Minor cosmetic changes to 15 makefiles, e.g., $(DI) = $(DESTDIR)/$(INCDIR).
-  Revised projects/msvc/README.txt
-  Changed -lpng to -lpngNN in LDFLAGS in several makefiles.
-version 1.2.4beta1 [May 24, 2002]
-  Added libpng.pc and libpng-config to "all:" target in 16 makefiles.
-  Fixed bug in 16 makefiles: $(DESTDIR)/$(LIBPATH) to $(DESTDIR)$(LIBPATH)
-  Added missing "\" before closing double quote in makefile.gcmmx.
-  Plugged various memory leaks; added png_malloc_warn() and png_set_text_2()
-    functions.
-version 1.2.4beta2 [June 25, 2002]
-  Plugged memory leak of png_ptr->current_text (Matt Holgate).
-  Check for buffer overflow before reading CRC in pngpread.c (Warwick Allison)
-  Added -soname to the loader flags in makefile.dec, makefile.sgi, and
-    makefile.sggcc.
-  Added "test-installed" target to makefile.linux, makefile.gcmmx,
-    makefile.sgi, and makefile.sggcc.
-version 1.2.4beta3 [June 28, 2002]
-  Plugged memory leak of row_buf in pngtest.c when there is a png_error().
-  Detect buffer overflow in pngpread.c when IDAT is corrupted with extra data.
-  Added "test-installed" target to makefile.32sunu, makefile.64sunu,
-    makefile.beos, makefile.darwin, makefile.dec, makefile.macosx,
-    makefile.solaris, makefile.hpux, makefile.hpgcc, and makefile.so9.
-version 1.2.4rc1 and 1.0.14rc1 [July 2, 2002]
-  Added "test-installed" target to makefile.cygwin and makefile.sco.
-  Revised pnggccrd.c to be able to back out version 1.0.x via PNG_1_0_X macro.
-
-version 1.2.4 and 1.0.14 [July 8, 2002]
-  Changed png_warning() to png_error() when width is too large to process.
-version 1.2.4patch01 [July 20, 2002]
-  Revised makefile.cygwin to use DLL number 12 instead of 13.
-version 1.2.5beta1 [August 6, 2002]
-  Added code to contrib/gregbook/readpng2.c to ignore unused chunks.
-  Replaced toucan.png in contrib/gregbook (it has been corrupt since 1.0.11)
-  Removed some stray *.o files from contrib/gregbook.
-  Changed png_error() to png_warning() about "Too much data" in pngpread.c
-    and about "Extra compressed data" in pngrutil.c.
-  Prevent png_ptr->pass from exceeding 7 in png_push_finish_row().
-  Updated makefile.hpgcc
-  Updated png.c and pnggccrd.c handling of return from png_mmx_support()
-version 1.2.5beta2 [August 15, 2002]
-  Only issue png_warning() about "Too much data" in pngpread.c when avail_in
-    is nonzero.
-  Updated makefiles to install a separate libpng.so.3 with its own rpath.
-version 1.2.5rc1 and 1.0.15rc1 [August 24, 2002]
-  Revised makefiles to not remove previous minor versions of shared libraries.
-version 1.2.5rc2 and 1.0.15rc2 [September 16, 2002]
-  Revised 13 makefiles to remove "-lz" and "-L$(ZLIBLIB)", etc., from shared
-    library loader directive.
-  Added missing "$OBJSDLL" line to makefile.gcmmx.
-  Added missing "; fi" to makefile.32sunu.
-version 1.2.5rc3 and 1.0.15rc3 [September 18, 2002]
-  Revised libpng-config script.
-
-version 1.2.5 and 1.0.15 [October 3, 2002]
-  Revised makefile.macosx, makefile.darwin, makefile.hpgcc, and makefile.hpux,
-    and makefile.aix.
-  Relocated two misplaced PNGAPI lines in pngtest.c
-version 1.2.6beta1 [October 22, 2002]
-  Commented out warning about uninitialized mmx_support in pnggccrd.c.
-  Changed "IBMCPP__" flag to "__IBMCPP__" in pngconf.h.
-  Relocated two more misplaced PNGAPI lines in pngtest.c
-  Fixed memory overrun bug in png_do_read_filler() with 16-bit datastreams,
-    introduced in version 1.0.2.
-  Revised makefile.macosx, makefile.dec, makefile.aix, and makefile.32sunu.
-version 1.2.6beta2 [November 1, 2002]
-  Added libpng-config "--ldopts" output.
-  Added "AR=ar" and "ARFLAGS=rc" and changed "ar rc" to "$(AR) $(ARFLAGS)"
-    in makefiles.
-version 1.2.6beta3 [July 18, 2004]
-  Reverted makefile changes from version 1.2.6beta2 and some of the changes
-    from version 1.2.6beta1; these will be postponed until version 1.2.7.
-    Version 1.2.6 is going to be a simple bugfix release.
-  Changed the one instance of "ln -sf" to "ln -f -s" in each Sun makefile.
-  Fixed potential overrun in pngerror.c by using strncpy instead of memcpy.
-  Added "#!/bin/sh" at the top of configure, for recognition of the
-    'x' flag under Cygwin (Cosmin).
-  Optimized vacuous tests that silence compiler warnings, in png.c (Cosmin).
-  Added support for PNG_USER_CONFIG, in pngconf.h (Cosmin).
-  Fixed the special memory handler for Borland C under DOS, in pngmem.c
-    (Cosmin).
-  Removed some spurious assignments in pngrutil.c (Cosmin).
-  Replaced 65536 with 65536L, and 0xffff with 0xffffL, to silence warnings
-    on 16-bit platforms (Cosmin).
-  Enclosed shift op expressions in parentheses, to silence warnings (Cosmin).
-  Used proper type png_fixed_point, to avoid problems on 16-bit platforms,
-    in png_handle_sRGB() (Cosmin).
-  Added compression_type to png_struct, and optimized the window size
-    inside the deflate stream (Cosmin).
-  Fixed definition of isnonalpha(), in pngerror.c and pngrutil.c (Cosmin).
-  Fixed handling of unknown chunks that come after IDAT (Cosmin).
-  Allowed png_error() and png_warning() to work even if png_ptr == NULL
-    (Cosmin).
-  Replaced row_info->rowbytes with row_bytes in png_write_find_filter()
-    (Cosmin).
-  Fixed definition of PNG_LIBPNG_VER_DLLNUM (Simon-Pierre).
-  Used PNG_LIBPNG_VER and PNG_LIBPNG_VER_STRING instead of the hardcoded
-    values in png.c (Simon-Pierre, Cosmin).
-  Initialized png_libpng_ver[] with PNG_LIBPNG_VER_STRING (Simon-Pierre).
-  Replaced PNG_LIBPNG_VER_MAJOR with PNG_LIBPNG_VER_DLLNUM in png.rc
-    (Simon-Pierre).
-  Moved the definition of PNG_HEADER_VERSION_STRING near the definitions
-    of the other PNG_LIBPNG_VER_... symbols in png.h (Cosmin).
-  Relocated #ifndef PNGAPI guards in pngconf.h (Simon-Pierre, Cosmin).
-  Updated scripts/makefile.vc(a)win32 (Cosmin).
-  Updated the MSVC project (Simon-Pierre, Cosmin).
-  Updated the Borland C++ Builder project (Cosmin).
-  Avoided access to asm_flags in pngvcrd.c, if PNG_1_0_X is defined (Cosmin).
-  Commented out warning about uninitialized mmx_support in pngvcrd.c (Cosmin).
-  Removed scripts/makefile.bd32 and scripts/pngdef.pas (Cosmin).
-  Added extra guard around inclusion of Turbo C memory headers, in pngconf.h
-    (Cosmin).
-  Renamed projects/msvc/ to projects/visualc6/, and projects/borland/ to
-    projects/cbuilder5/ (Cosmin).
-  Moved projects/visualc6/png32ms.def to scripts/pngw32.def,
-    and projects/visualc6/png.rc to scripts/pngw32.rc (Cosmin).
-  Added projects/visualc6/pngtest.dsp; removed contrib/msvctest/ (Cosmin).
-  Changed line endings to DOS style in cbuilder5 and visualc6 files, even
-    in the tar.* distributions (Cosmin).
-  Updated contrib/visupng/VisualPng.dsp (Cosmin).
-  Updated contrib/visupng/cexcept.h to version 2.0.0 (Cosmin).
-  Added a separate distribution with "configure" and supporting files (Junichi).
-version 1.2.6beta4 [July 28, 2004]
-  Added user ability to change png_size_t via a PNG_SIZE_T macro.
-  Added png_sizeof() and png_convert_size() functions.
-  Added PNG_SIZE_MAX (maximum value of a png_size_t variable.
-  Added check in png_malloc_default() for (size_t)size != (png_uint_32)size
-    which would indicate an overflow.
-  Changed sPLT failure action from png_error to png_warning and abandon chunk.
-  Changed sCAL and iCCP failures from png_error to png_warning and abandon.
-  Added png_get_uint_31(png_ptr, buf) function.
-  Added PNG_UINT_32_MAX macro.
-  Renamed PNG_MAX_UINT to PNG_UINT_31_MAX.
-  Made png_zalloc() issue a png_warning and return NULL on potential
-    overflow.
-  Turn on PNG_NO_ZALLOC_ZERO by default in version 1.2.x
-  Revised "clobber list" in pnggccrd.c so it will compile under gcc-3.4.
-  Revised Borland portion of png_malloc() to return NULL or issue
-    png_error() according to setting of PNG_FLAG_MALLOC_NULL_MEM_OK.
-  Added PNG_NO_SEQUENTIAL_READ_SUPPORTED macro to conditionally remove
-    sequential read support.
-  Added some "#if PNG_WRITE_SUPPORTED" blocks.
-  Added #ifdef to remove some redundancy in png_malloc_default().
-  Use png_malloc instead of png_zalloc to allocate the pallete.
-version 1.0.16rc1 and 1.2.6rc1 [August 4, 2004]
-  Fixed buffer overflow vulnerability in png_handle_tRNS()
-  Fixed integer arithmetic overflow vulnerability in png_read_png().
-  Fixed some harmless bugs in png_handle_sBIT, etc, that would cause
-    duplicate chunk types to go undetected.
-  Fixed some timestamps in the -config version
-  Rearranged order of processing of color types in png_handle_tRNS().
-  Added ROWBYTES macro to calculate rowbytes without integer overflow.
-  Updated makefile.darwin and removed makefile.macosx from scripts directory.
-  Imposed default one million column, one-million row limits on the image
-    dimensions, and added png_set_user_limits() function to override them.
-  Revised use of PNG_SET_USER_LIMITS_SUPPORTED macro.
-  Fixed wrong cast of returns from png_get_user_width|height_max().
-  Changed some "keep the compiler happy" from empty statements to returns,
-  Revised libpng.txt to remove 1.2.x stuff from the 1.0.x distribution
-version 1.0.16rc2 and 1.2.6rc2 [August 7, 2004]
-  Revised makefile.darwin and makefile.solaris.  Removed makefile.macosx.
-  Revised pngtest's png_debug_malloc() to use png_malloc() instead of
-    png_malloc_default() which is not supposed to be exported.
-  Fixed off-by-one error in one of the conversions to PNG_ROWBYTES() in
-    pngpread.c.  Bug was introduced in 1.2.6rc1.
-  Fixed bug in RGB to RGBX transformation introduced in 1.2.6rc1.
-  Fixed old bug in RGB to Gray transformation.
-  Fixed problem with 64-bit compilers by casting arguments to abs()
-    to png_int_32.
-  Changed "ln -sf" to "ln -f -s" in three makefiles (solaris, sco, so9).
-  Changed "HANDLE_CHUNK_*" to "PNG_HANDLE_CHUNK_*" (Cosmin)
-  Added "-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)" to 15 *NIX makefiles.
-  Added code to update the row_info->colortype in png_do_read_filler() (MSB).
-version 1.0.16rc3 and 1.2.6rc3 [August 9, 2004]
-  Eliminated use of "abs()" in testing cHRM and gAMA values, to avoid
-    trouble with some 64-bit compilers.  Created PNG_OUT_OF_RANGE() macro.
-  Revised documentation of png_set_keep_unknown_chunks().
-  Check handle_as_unknown status in pngpread.c, as in pngread.c previously.
-  Moved  "PNG_HANDLE_CHUNK_*" macros out of PNG_INTERNAL section of png.h
-  Added "rim" definitions for CONST4 and CONST6 in pnggccrd.c
-version 1.0.16rc4 and 1.2.6rc4 [August 10, 2004]
-  Fixed mistake in pngtest.c introduced in 1.2.6rc2 (declaration of
-    "pinfo" was out of place).
-version 1.0.16rc5 and 1.2.6rc5 [August 10, 2004]
-  Moved  "PNG_HANDLE_CHUNK_*" macros out of PNG_ASSEMBLER_CODE_SUPPORTED
-     section of png.h where they were inadvertently placed in version rc3.
-
-version 1.2.6 and 1.0.16 [August 15, 2004]
-  Revised pngtest so memory allocation testing is only done when PNG_DEBUG==1.
-version 1.2.7beta1 [August 26, 2004]
-  Removed unused pngasmrd.h file.
-  Removed references to uu.net for archived files.  Added references to
-    PNG Spec (second edition) and the PNG ISO/IEC Standard.
-  Added "test-dd" target in 15 makefiles, to run pngtest in DESTDIR.
-  Fixed bug with "optimized window size" in the IDAT datastream, that
-    causes libpng to write PNG files with incorrect zlib header bytes.
-version 1.2.7beta2 [August 28, 2004]
-  Fixed bug with sCAL chunk and big-endian machines (David Munro).
-  Undid new code added in 1.2.6rc2 to update the color_type in
-    png_set_filler().
-  Added png_set_add_alpha() that updates color type.
-version 1.0.17rc1 and 1.2.7rc1 [September 4, 2004]
-  Revised png_set_strip_filler() to not remove alpha if color_type has alpha.
-
-version 1.2.7 and 1.0.17 [September 12, 2004]
-  Added makefile.hp64
-  Changed projects/msvc/png32ms.def to scripts/png32ms.def in makefile.cygwin
-version 1.2.8beta1 [November 1, 2004]
-  Fixed bug in png_text_compress() that would fail to complete a large block.
-  Fixed bug, introduced in libpng-1.2.7, that overruns a buffer during
-    strip alpha operation in png_do_strip_filler().
-  Added PNG_1_2_X definition in pngconf.h
-  Use #ifdef to comment out png_info_init in png.c and png_read_init in
-    pngread.c (as of 1.3.0)
-version 1.2.8beta2 [November 2, 2004]
-  Reduce color_type to a nonalpha type after strip alpha operation in
-    png_do_strip_filler().
-version 1.2.8beta3 [November 3, 2004]
-  Revised definitions of PNG_MAX_UINT_32, PNG_MAX_SIZE, and PNG_MAXSUM
-version 1.2.8beta4 [November 12, 2004]
-  Fixed (again) definition of PNG_LIBPNG_VER_DLLNUM in png.h (Cosmin).
-  Added PNG_LIBPNG_BUILD_PRIVATE in png.h (Cosmin).
-  Set png_ptr->zstream.data_type to Z_BINARY, to avoid unnecessary detection
-    of data type in deflate (Cosmin).
-  Deprecated but continue to support SPECIALBUILD and PRIVATEBUILD in favor of
-    PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING.
-version 1.2.8beta5 [November 20, 2004]
-  Use png_ptr->flags instead of png_ptr->transformations to pass
-    PNG_STRIP_ALPHA info to png_do_strip_filler(), to preserve ABI
-    compatibility.
-  Revised handling of SPECIALBUILD, PRIVATEBUILD,
-    PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING.
-version 1.2.8rc1 [November 24, 2004]
-  Moved handling of BUILD macros from pngconf.h to png.h
-  Added definition of PNG_LIBPNG_BASE_TYPE in png.h, inadvertently
-    omitted from beta5.
-  Revised scripts/pngw32.rc
-  Despammed mailing addresses by masking "@" with "at".
-  Inadvertently installed a supposedly faster test version of pngrutil.c
-version 1.2.8rc2 [November 26, 2004]
-  Added two missing "\" in png.h
-  Change tests in pngread.c and pngpread.c to
-    if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
-       png_do_read_transformations(png_ptr);
-version 1.2.8rc3 [November 28, 2004]
-  Reverted pngrutil.c to version libpng-1.2.8beta5.
-  Added scripts/makefile.elf with supporting code in pngconf.h for symbol
-    versioning (John Bowler).
-version 1.2.8rc4 [November 29, 2004]
-  Added projects/visualc7 (Simon-pierre).
-version 1.2.8rc5 [November 29, 2004]
-  Fixed new typo in scripts/pngw32.rc
-
-version 1.2.8 [December 3, 2004]
-  Removed projects/visualc7, added projects/visualc71.
-
-version 1.2.9beta1 [February 21, 2006]
-
-  Initialized some structure members in pngwutil.c to avoid gcc-4.0.0 complaints
-  Revised man page and libpng.txt to make it clear that one should not call
-    png_read_end or png_write_end after png_read_png or png_write_png.
-  Updated references to png-mng-implement mailing list.
-  Fixed an incorrect typecast in pngrutil.c
-  Added PNG_NO_READ_SUPPORTED conditional for making a write-only library.
-  Added PNG_NO_WRITE_INTERLACING_SUPPORTED conditional.
-  Optimized alpha-inversion loops in pngwtran.c
-  Moved test for nonzero gamma outside of png_build_gamma_table() in pngrtran.c
-  Make sure num_trans is <= 256 before copying data in png_set_tRNS().
-  Make sure num_palette is <= 256 before copying data in png_set_PLTE().
-  Interchanged order of write_swap_alpha and write_invert_alpha transforms.
-  Added parentheses in the definition of PNG_LIBPNG_BUILD_TYPE (Cosmin).
-  Optimized zlib window flag (CINFO) in contrib/pngsuite/*.png (Cosmin).
-  Updated scripts/makefile.bc32 for Borland C++ 5.6 (Cosmin).
-  Exported png_get_uint_32, png_save_uint_32, png_get_uint_16, png_save_uint_16,
-    png_get_int_32, png_save_int_32, png_get_uint_31 (Cosmin).
-  Added type cast (png_byte) in png_write_sCAL() (Cosmin).
-  Fixed scripts/makefile.cygwin (Christian Biesinger, Cosmin).
-  Default iTXt support was inadvertently enabled.
-
-version 1.2.9beta2 [February 21, 2006]
-
-  Check for png_rgb_to_gray and png_gray_to_rgb read transformations before
-    checking for png_read_dither in pngrtran.c
-  Revised checking of chromaticity limits to accommodate extended RGB
-    colorspace (John Denker).
-  Changed line endings in some of the project files to CRLF, even in the
-    "Unix" tar distributions (Cosmin).
-  Made png_get_int_32 and png_save_int_32 always available (Cosmin).
-  Updated scripts/pngos2.def, scripts/pngw32.def and projects/wince/png32ce.def
-    with the newly exported functions.
-  Eliminated distributions without the "configure" script.
-  Updated INSTALL instructions.
-
-version 1.2.9beta3 [February 24, 2006]
-
-  Fixed CRCRLF line endings in contrib/visupng/VisualPng.dsp
-  Made libpng.pc respect EXEC_PREFIX (D. P. Kreil, J. Bowler)
-  Removed reference to pngasmrd.h from Makefile.am
-  Renamed CHANGES to ChangeLog.
-  Renamed LICENSE to COPYING.
-  Renamed ANNOUNCE to NEWS.
-  Created AUTHORS file.
-
-version 1.2.9beta4 [March 3, 2006]
-
-  Changed definition of PKGCONFIG from $prefix/lib to $libdir in configure.ac
-  Reverted to filenames LICENSE and ANNOUNCE; removed AUTHORS and COPYING.
-  Removed newline from the end of some error and warning messages.
-  Removed test for sqrt() from configure.ac and configure.
-  Made swap tables in pngtrans.c PNG_CONST (Carlo Bramix).
-  Disabled default iTXt support that was inadvertently enabled in
-    libpng-1.2.9beta1.
-  Added "OS2" to list of systems that don't need underscores, in pnggccrd.c
-  Removed libpng version and date from *.c files.
-
-version 1.2.9beta5 [March 4, 2006]
-  Removed trailing blanks from source files.
-  Put version and date of latest change in each source file, and changed
-    copyright year accordingly.
-  More cleanup of configure.ac, Makefile.ac, and associated scripts.
-  Restored scripts/makefile.elf which was inadvertently deleted.
-
-version 1.2.9beta6 [March 6, 2006]
-  Fixed typo (RELEASE) in configuration files.
-
-version 1.2.9beta7 [March 7, 2006]
-  Removed libpng.vers and libpng.sym from libpng12_la_SOURCES in Makefile.am
-  Fixed inconsistent #ifdef's around png_sig_bytes() and png_set_sCAL_s()
-    in png.h.
-  Updated makefile.elf as suggested by debian.
-  Made cosmetic changes to some makefiles, adding LN_SF and other macros.
-  Made some makefiles accept "exec_prefix".
-
-version 1.2.9beta8 [March 9, 2006]
-  Fixed some "#if defined (..." which should be "#if defined(..."
-    Bug introduced in libpng-1.2.8.
-  Fixed inconsistency in definition of png_default_read_data()
-  Restored blank that was lost from makefile.sggcc "clean" target in beta7.
-  Revised calculation of "current" and "major" for irix in ltmain.sh
-  Changed "mkdir" to "MKDIR_P" in some makefiles.
-  Separated PNG_EXPAND and PNG_EXPAND_tRNS.
-  Added png_set_expand_gray_1_2_4_to_8() and deprecated
-    png_set_gray_1_2_4_to_8() which also expands tRNS to alpha.
-
-version 1.2.9beta9 [March 10, 2006]
-  Include "config.h" in pngconf.h when available.
-  Added some checks for NULL png_ptr or NULL info_ptr (timeless)
-
-version 1.2.9beta10 [March 20, 2006]
-  Removed extra CR from contrib/visualpng/VisualPng.dsw (Cosmin)
-  Made pnggccrd.c PIC-compliant (Christian Aichinger).
-  Added makefile.mingw (Wolfgang Glas).
-  Revised pngconf.h MMX checking.
-
-version 1.2.9beta11 [March 22, 2006]
-  Fixed out-of-order declaration in pngwrite.c that was introduced in beta9
-  Simplified some makefiles by using LIBSO, LIBSOMAJ, and LIBSOVER macros.
-
-version 1.2.9rc1 [March 31, 2006]
-  Defined PNG_USER_PRIVATEBUILD when including "pngusr.h" (Cosmin).
-  Removed nonsensical assertion check from pngtest.c (Cosmin).
-
-version 1.2.9 [April 14, 2006]
-  Revised makefile.beos and added "none" selector in ltmain.sh
+Changes since the last public release (1.2.10):
 
 version 1.2.10beta1 [April 15, 2006]
   Renamed "config.h" to "png_conf.h" and revised Makefile.am to add
@@ -1555,18 +56,32 @@
   Ensure pngconf.h doesn't define both PNG_USE_PNGGCCRD and PNG_USE_PNGVCRD
   Fixed "LN_FS" typo in makefile.sco and makefile.solaris.
 
-version 1.2.10rc2 [April 20, 2006]
+version 1.2.10rc2 [April 19, 2006]
   Added a backslash between -DPNG_CONFIGURE_LIBPNG and -DPNG_NO_ASSEMBLER_CODE
-   in configure.ac and configure
+    in configure.ac
   Made the configure warning about versioned symbols less arrogant.
 
-version 1.2.10rc3 [April 21, 2006]
+version 1.2.10rc3 [April 20, 2006]
   Added a note in libpng.txt that png_set_sig_bytes(8) can be used when
     writing an embedded PNG without the 8-byte signature.
-  Revised makefiles and configure to avoid making links to libpng.so.*
 
-version 1.2.10 [April 23, 2006]
-  Reverted configure to "rc2" state.
+version 1.4.0beta1 [April 20, 2006]
+  Enabled iTXt support (changes png_struct, thus requires so-number change).
+  Cleaned up PNG_ASSEMBLER_CODE_SUPPORTED vs PNG_MMX_CODE_SUPPORTED
+  Eliminated PNG_1_0_X and PNG_1_2_X macros.
+  Removed deprecated functions png_read_init, png_write_init, png_info_init,
+    png_permit_empty_plte, png_set_gray_1_2_4_to_8, and removed the
+    deprecated macro PNG_MAX_UINT.
+  Moved "PNG_INTERNAL" parts of png.h and pngconf.h into pngintrn.h
+  Removed many WIN32_WCE #ifdefs (Cosmin).
+  Reduced dependency on C-runtime library when on Windows (Simon-Pierre)
+  Replaced sprintf() with png_sprintf() (Simon-Pierre)
+
+version 1.4.0beta2 [April 20, 2006]
+  Revised makefiles to avoid making links to libpng.so.*
+  Moved some leftover MMX-related defines from pngconf.h to pngintrn.h
+  Updated scripts/pngos2.def, pngw32.def, and projects/wince/png32ce.def
+  Updated scripts/pngw32.def to comment out MMX functions.
 
 version 1.2.11beta1 [May 31, 2006]
   scripts/libpng.pc.in contained "configure" style version info and would
@@ -1574,10 +89,28 @@
   The shared-library makefiles were linking to libpng.so.0 instead of
     libpng.so.3 compatibility as the library.
 
+version 1.4.0beta3 [May 10, 2006]
+  Updated scripts/pngw32.def to comment out MMX functions.
+  Added PNG_NO_GET_INT_32 and PNG_NO_SAVE_INT_32 macros.
+  Revised pngconf.h and added pngconf.h.in so makefiles and configure can
+    pass defines to libpng and applications.
+
+version 1.4.0beta4 [May 11, 2006]
+  Revised configure.ac, Makefile.am, and many of the makefiles to write
+    their defines in pngconf.h.
+
+version 1.4.0beta5 [May 15, 2006]
+  Added a missing semicolon in Makefile.am and Makefile.in
+  Deleted extraneous square brackets from configure.ac
+
 version 1.2.11beta2 [June 2, 2006]
   Increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid
     buffer overflow.
-  Fixed bug in example.c (png_set_palette_rgb -> png_set_palette_to_rgb)
+  Fixed bug in example.c (png_set_palette_rgb -> png_set_palette_to_rgb))
+
+version 1.4.0beta6 [June 2, 2006]
+  Changed sonum from 0 to 1.
+  Removed unused prototype for png_check_sig() from png.h
 
 version 1.2.11beta3 [June 5, 2006]
   Prepended "#! /bin/sh" to ltmail.sh and contrib/pngminus/*.sh (Cosmin).
@@ -1591,228 +124,15 @@
   Allow zero-length IDAT chunks after the entire zlib datastream, but not
     after another intervening chunk type.
 
-version 1.0.19rc1, 1.2.11rc1 [June 13, 2006]
-  Deleted extraneous square brackets from [config.h] in configure.ac
-
-version 1.0.19rc2, 1.2.11rc2 [June 14, 2006]
+version 1.2.11rc2 [June 14, 2006]
   Added prototypes for PNG_INCH_CONVERSIONS functions to png.h
   Revised INSTALL and autogen.sh
   Fixed typo in several makefiles (-W1 should be -Wl)
-  Added typedef for png_int_32 and png_uint_32 on 64-bit systems.
 
-version 1.0.19rc3, 1.2.11rc3 [June 15, 2006]
-  Removed the new typedefs for 64-bit systems (delay until version 1.4.0)
+version 1.2.11rc3 [June 15, 2006]
   Added one zero element to png_gamma_shift[] array in pngrtran.c to avoid
     reading out of bounds.
 
-version 1.0.19rc4, 1.2.11rc4 [June 15, 2006]
-  Really removed the new typedefs for 64-bit systems.
-
-version 1.0.19rc5, 1.2.11rc5 [June 22, 2006]
-  Removed png_sig_bytes entry from scripts/pngw32.def
-
-version 1.0.19, 1.2.11 [June 26, 2006]
-  None.
-
-version 1.0.20, 1.2.12 [June 27, 2006]
-  Really increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid
-    buffer overflow.
-
-version 1.2.13beta1 [October 2, 2006]
-  Removed AC_FUNC_MALLOC from configure.ac
-  Work around Intel-Mac compiler bug by setting PNG_NO_MMX_CODE in pngconf.h
-  Change "logical" to "bitwise" throughout documentation.
-  Detect and fix attempt to write wrong iCCP profile length.
-
-version 1.0.21, 1.2.13 [November 14, 2006]
-  Fix potential buffer overflow in sPLT chunk handler.
-  Fix Makefile.am to not try to link to noexistent files.
-  Check all exported functions for NULL png_ptr.
-
-version 1.2.14beta1 [November 17, 2006]
-  Relocated three misplaced tests for NULL png_ptr.
-  Built Makefile.in with automake-1.9.6 instead of 1.9.2.
-  Build configure with autoconf-2.60 instead of 2.59
-
-version 1.2.14beta2 [November 17, 2006]
-  Added some typecasts in png_zalloc().
-
-version 1.2.14rc1 [November 20, 2006]
-  Changed "strtod" to "png_strtod" in pngrutil.c
-
-version 1.0.22, 1.2.14    [November 27, 2006]
-  Added missing "$(srcdir)" in Makefile.am and Makefile.in
-
-version 1.2.15beta1 [December 3, 2006]
-  Generated configure with autoconf-2.61 instead of 2.60
-  Revised configure.ac to update libpng.pc and libpng-config.
-
-version 1.2.15beta2 [December 3, 2006]
-  Always export MMX asm functions, just stubs if not building pnggccrd.c
-
-version 1.2.15beta3 [December 4, 2006]
-  Add "png_bytep" typecast to profile while calculating length in pngwutil.c
-
-version 1.2.15beta4 [December 7, 2006]
-  Added scripts/CMakeLists.txt
-  Changed PNG_NO_ASSEMBLER_CODE to PNG_NO_MMX_CODE in scripts, like 1.4.0beta
-
-version 1.2.15beta5 [December 7, 2006]
-  Changed some instances of PNG_ASSEMBLER_* to PNG_MMX_* in pnggccrd.c
-  Revised scripts/CMakeLists.txt
-
-version 1.2.15beta6 [December 13, 2006]
-  Revised scripts/CMakeLists.txt and configure.ac
-
-version 1.2.15rc1 [December 18, 2006]
-  Revised scripts/CMakeLists.txt
-
-version 1.2.15rc2 [December 21, 2006]
-  Added conditional #undef jmpbuf in pngtest.c to undo #define in AIX headers.
-  Added scripts/makefile.nommx
-
-version 1.2.15rc3 [December 25, 2006]
-  Fixed shared library numbering error that was intruduced in 1.2.15beta6.
-
-version 1.2.15rc4 [December 27, 2006]
-  Fixed handling of rgb_to_gray when png_ptr->color.gray isn't set.
-
-version 1.2.15rc5 [December 31, 2006]
-  Revised handling of rgb_to_gray.
-
-version 1.2.15 [January 5, 2007]
-  Added some (unsigned long) typecasts in pngtest.c to avoid printing errors.
-
-version 1.2.16beta1 [January 6, 2007]
-  Fix bugs in makefile.nommx
-
-version 1.2.16beta2 [January 16, 2007]
-  Revised scripts/CMakeLists.txt
-
-version 1.2.16 [January 31, 2007]
-  No changes.
-
-version 1.2.17beta1 [March 6, 2007]
-  Revised scripts/CMakeLists.txt to install both shared and static libraries.
-  Deleted a redundant line from pngset.c.
-
-version 1.2.17beta2 [April 26, 2007]
-  Relocated misplaced test for png_ptr == NULL in pngpread.c
-  Change "==" to "&" for testing PNG_RGB_TO_GRAY_ERR & PNG_RGB_TO_GRAY_WARN
-    flags.
-  Changed remaining instances of PNG_ASSEMBLER_* to PNG_MMX_*
-  Added pngerror() when write_IHDR fails in deflateInit2().
-  Added "const" to some array declarations.
-  Mention examples of libpng usage in the libpng*.txt and libpng.3 documents.
-
-version 1.2.17rc1 [May 4, 2007]
-  No changes.
-
-version 1.2.17rc2 [May 8, 2007]
-  Moved several PNG_HAVE_* macros out of PNG_INTERNAL because applications
-    calling set_unknown_chunk_location() need them.
-  Changed transformation flag from PNG_EXPAND_tRNS to PNG_EXPAND in
-    png_set_expand_gray_1_2_4_to_8().
-  Added png_ptr->unknown_chunk to hold working unknown chunk data, so it
-    can be free'ed in case of error.  Revised unknown chunk handling in
-    pngrutil.c and pngpread.c to use this structure.
-
-version 1.2.17rc3 [May 8, 2007]
-  Revised symbol-handling in configure script.
-
-version 1.2.17rc4 [May 10, 2007]
-  Revised unknown chunk handling to avoid storing unknown critical chunks.
-
-version 1.0.25 [May 15, 2007]
-version 1.2.17 [May 15, 2007]
-  Added "png_ptr->num_trans=0" before error return in png_handle_tRNS,
-    to eliminate a vulnerability (CVE-2007-2445, CERT VU#684664)
-
-version 1.0.26 [May 15, 2007]
-version 1.2.18 [May 15, 2007]
-  Reverted the libpng-1.2.17rc3 change to symbol-handling in configure script
-
-version 1.2.19beta1 [May 18, 2007]
-  Changed "const static" to "static PNG_CONST" everywhere, mostly undoing
-    change of libpng-1.2.17beta2.  Changed other "const" to "PNG_CONST"
-  Changed some handling of unused parameters, to avoid compiler warnings.
-    "if (unused == NULL) return;" becomes "unused = unused".
-
-version 1.2.19beta2 [May 18, 2007]
-  Only use the valid bits of tRNS value in png_do_expand() (Brian Cartier)
-
-version 1.2.19beta3 [May 19, 2007]
-  Add some "png_byte" typecasts in png_check_keyword() and write new_key
-  instead of key in zTXt chunk (Kevin Ryde).
-
-version 1.2.19beta4 [May 21, 2007]
-  Add png_snprintf() function and use it in place of sprint() for improved
-    defense against buffer overflows.
-
-version 1.2.19beta5 [May 21, 2007]
-  Fixed png_handle_tRNS() to only use the valid bits of tRNS value.
-  Changed handling of more unused parameters, to avoid compiler warnings.
-  Removed some PNG_CONST in pngwutil.c to avoid compiler warnings.
-
-version 1.2.19beta6 [May 22, 2007]
-  Added some #ifdef PNG_MMX_CODE_SUPPORTED where needed in pngvcrd.c
-  Added a special "_MSC_VER" case that defines png_snprintf to _snprintf
-
-version 1.2.19beta7 [May 22, 2007]
-  Squelched png_squelch_warnings() in pnggccrd.c and added
-    an #ifdef PNG_MMX_CODE_SUPPORTED block around the declarations that caused
-    the warnings that png_squelch_warnings was squelching.
-
-version 1.2.19beta8 [May 22, 2007]
-  Removed __MMX__ from test in pngconf.h.
-
-version 1.2.19beta9 [May 23, 2007]
-  Made png_squelch_warnings() available via PNG_SQUELCH_WARNINGS macro.
-  Revised png_squelch_warnings() so it might work.
-  Updated makefile.sgcc and makefile.solaris; added makefile.solaris-x86.
-
-version 1.2.19beta10 [May 24, 2007]
-  Resquelched png_squelch_warnings(), use "__attribute__((used))" instead.
-
-version 1.4.0beta1 [April 20, 2006]
-  Enabled iTXt support (changes png_struct, thus requires so-number change).
-  Cleaned up PNG_ASSEMBLER_CODE_SUPPORTED vs PNG_MMX_CODE_SUPPORTED
-  Eliminated PNG_1_0_X and PNG_1_2_X macros.
-  Removed deprecated functions png_read_init, png_write_init, png_info_init,
-    png_permit_empty_plte, png_set_gray_1_2_4_to_8, png_check_sig, and
-    removed the deprecated macro PNG_MAX_UINT.
-  Moved "PNG_INTERNAL" parts of png.h and pngconf.h into pngintrn.h
-  Removed many WIN32_WCE #ifdefs (Cosmin).
-  Reduced dependency on C-runtime library when on Windows (Simon-Pierre)
-  Replaced sprintf() with png_sprintf() (Simon-Pierre)
-
-version 1.4.0beta2 [April 20, 2006]
-  Revised makefiles and configure to avoid making links to libpng.so.*
-  Moved some leftover MMX-related defines from pngconf.h to pngintrn.h
-  Updated scripts/pngos2.def, pngw32.def, and projects/wince/png32ce.def
-
-version 1.4.0beta3 [May 10, 2006]
-  Updated scripts/pngw32.def to comment out MMX functions.
-  Added PNG_NO_GET_INT_32 and PNG_NO_SAVE_INT_32 macros.
-  Scripts/libpng.pc.in contained "configure" style version info and would
-    not work with makefiles.
-  Revised pngconf.h and added pngconf.h.in, so makefiles and configure can
-    pass defines to libpng and applications.
-
-version 1.4.0beta4 [May 11, 2006]
-  Revised configure.ac, Makefile.am, and many of the makefiles to write
-    their defines in pngconf.h.
-
-version 1.4.0beta5 [May 15, 2006]
-  Added a missing semicolon in Makefile.am and Makefile.in
-  Deleted extraneous square brackets from configure.ac
-
-version 1.4.0beta6 [June 2, 2006]
-  Increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid
-    buffer overflow.
-  Changed sonum from 0 to 1.
-  Removed unused prototype for png_check_sig() from png.h
-
 version 1.4.0beta7 [June 16, 2006]
   Exported png_write_sig (Cosmin).
   Optimized buffer in png_handle_cHRM() (Cosmin).
@@ -1820,9 +140,8 @@
     sCAL = 0.352778e-3 x 0.352778e-3 meters, in pngtest.png (Cosmin).
   Added png_set_benign_errors(), png_benign_error(), png_chunk_benign_error().
   Added typedef for png_int_32 and png_uint_32 on 64-bit systems.
-  Added "(unsigned long)" typecast on png_uint_32 variables in printf lists.
 
-version 1.4.0beta8 [June 22, 2006]
+version 1.4.0beta8 [June 21, 2006]
   Added demonstration of user chunk support in pngtest.c, to support the
     public sTER chunk and a private vpAg chunk.
 
@@ -1835,11 +154,7 @@
   Removed standalone Y2KINFO file.
 
 version 1.4.0beta10 [July 12, 2006]
-  Eliminated automatic copy of pngconf.h to pngconf.h.in from configure and
-    some makefiles, because it was not working reliably.  Instead, distribute
-    pngconf.h.in along with pngconf.h and cause configure and some of the
-    makefiles to update pngconf.h from pngconf.h.in.
-  Added pngconf.h to DEPENDENCIES in Makefile.am
+  Added "all: pngconf.h.in pngconf.h" target to Makefile.am
 
 version 1.4.0beta11 [August 19, 2006]
   Removed AC_FUNC_MALLOC from configure.ac.
@@ -1901,7 +216,7 @@
 version 1.4.0beta15 [November 17, 2006]
   Relocated two misplaced tests for NULL png_ptr.
   Built Makefile.in with automake-1.9.6 instead of 1.9.2.
-  Build configure with autoconf-2.60 instead of 2.59
+  Build configure with autoconf-2.60 instead of 2.59.
   Add "install: all" in Makefile.am so "configure; make install" will work.
 
 version 1.4.0beta16 [November 17, 2006]
@@ -1909,7 +224,6 @@
 
 version 1.4.0beta17 [December 4, 2006]
   Changed "new_key[79] = '\0';" to "(*new_key)[79] = '\0';" in pngwutil.c
-  Add "png_bytep" typecast to profile while calculating length in pngwutil.c
 
 version 1.4.0beta18 [December 7, 2006]
   Added scripts/CMakeLists.txt
@@ -1917,16 +231,19 @@
 version 1.4.0beta19 [May 16, 2007]
   Revised scripts/CMakeLists.txt
   Rebuilt configure and Makefile.in with newer tools.
-  Added conditional #undef jmpbuf in pngtest.c to undo #define in AIX headers.
-  Added scripts/makefile.nommx
+  Added "png_ptr->num_trans=0" before error return in png_handle_tRNS,
+    to eliminate a vulnerability (CVE-2007-2554, CERT VU#684664)
 
 version 1.4.0beta20 [July 9, 2008]
   Moved several PNG_HAVE_* macros from pngpriv.h to png.h because applications
     calling set_unknown_chunk_location() need them.
   Moved several macro definitions from pngpriv.h to pngconf.h
-  Merge with changes to the 1.2.X branch, as of 1.2.30beta04.
-  Deleted all use of the MMX assembler code and Intel-licensed optimizations.
+  Added png_ptr->unknown_chunk to hold working unknown chunk data, so it
+    can be free'ed in case of error.  Revised unknown chunk handling in
+    pngrutil.c and pngpread.c to use this structure.
+  Merge with changes to the 1.2.X branch, as of 1.2.19beta10.
   Revised makefile.mingw
+  Prefer PNG_USE_PNGVCRD when _MSC_VER is defined in pngconf.h
 
 version 1.4.0beta21 [July 21, 2008]
   Moved local array "chunkdata" from pngrutil.c to the png_struct, so
@@ -1995,7 +312,7 @@
   Revised PNG_NO_STDIO version of png_write_flush()
 
 version 1.4.0beta33 [August 20, 2008]
-  Added png_get|set_chunk_cache_max() to limit the total number of sPLT,
+  Added png_set_chunk_cache_max() to limit the total number of sPLT,
     text, and unknown chunks that can be stored.
 
 version 1.4.0beta34 [September 6, 2008]
@@ -2005,8 +322,6 @@
 
 version 1.4.0beta35 [October 6, 2008]
   Changed "trans_values" to "trans_color".
-  Changed so-number from 0 to 14.  Some OS do not like 0.
-  Revised makefile.darwin to fix shared library numbering.
   Change png_set_gray_1_2_4_to_8() to png_set_expand_gray_1_2_4_to_8()
     in example.c (debian bug report)
 
@@ -2018,7 +333,7 @@
     and pngwrite.c
 
 version 1.4.0beta38 [November 22, 2008]
-  Added check for zero-area RGB cHRM triangle in png_check_cHRM() and
+  Added check for zero-area RGB cHRM triange in png_check_cHRM() and
     png_check_cHRM_fixed().
 
 version 1.4.0beta39 [November 23, 2008]
@@ -2060,7 +375,6 @@
   Added new exported function png_calloc().
   Combined several instances of png_malloc(); png_memset() into png_calloc().
   Removed prototype for png_freeptr() that was added in libpng-1.4.0beta24
-    but was never defined.
 
 version 1.4.0beta49 [February 28, 2009]
   Added png_fileno() macro to pngconf.h, used in pngwio.c
@@ -2074,7 +388,7 @@
 version 1.4.0beta50 [March 18, 2009]
   Use png_calloc() instead of png_malloc() to allocate big_row_buf when
     reading an interlaced file, to avoid a possible UMR.
-  Undid revision of PNG_NO_STDIO version of png_write_flush().  Users
+  Undid recent revision of PNG_NO_STDIO version of png_write_flush().  Users
     having trouble with fflush() can build with PNG_NO_WRITE_FLUSH defined
     or supply their own flush_fn() replacement.
   Revised libpng*.txt and png.h documentation about use of png_write_flush()
@@ -2187,7 +501,6 @@
   Removed extraneous declaration from the new call to png_read_gray_to_rgb()
     (bug introduced in libpng-1.4.0beta67).
   Fixed up xcode project (Alam Arias)
-  Added a prototype for png_64bit_product() in png.c
 
 version 1.4.0beta70 [July 27, 2009]
   Avoid a possible NULL dereference in debug build, in png_set_text_2().
@@ -2195,6 +508,7 @@
 
 version 1.4.0beta71 [July 29, 2009]
   Rebuilt configure scripts with autoconf-2.64.
+  Added a prototype for png_64bit_product() in png.c
 
 version 1.4.0beta72 [August 1, 2009]
   Replaced *.tar.lzma with *.tar.xz in distribution.  Get the xz codec
@@ -2358,7 +672,6 @@
     directory, to libpng-config.in and libpng-pc.in, respectively, and
     modified Makefile.am and configure.ac accordingly.  Now "configure"
     needs nothing from the "scripts" directory.
-  Avoid redefining PNG_CONST in pngconf.h
 
 version 1.4.0beta100 [November 14, 2009]
   Removed ASM builds from projects/visualc6 and projects/visualc71
@@ -2382,10 +695,10 @@
 version 1.4.0beta103 [November 21, 2009]
   Removed obsolete comments about ASM from projects/visualc71/README_zlib.txt
   Align row_buf on 16-byte boundary in memory.
-  Restored the PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED guard around the call
-    to png_flush() after png_write_IEND().  See 1.4.0beta32, 1.4.0beta50
-    changes above and 1.2.30, 1.2.30rc01 and rc03 in 1.2.41 CHANGES.  Someone
-    needs this feature.
+  Restored the PNG_WRITE_FLUSH_AFTER_IEND guard around the call to png_flush()
+    after png_write_IEND().  See 1.4.0beta32, 1.4.0beta50 changes above
+    and 1.2.30, 1.2.30rc01 and rc03 in 1.2.41 CHANGES.  Someone needs this
+    feature.
   Make the 'png_jmpbuf' macro expand to a call that records the correct
     longjmp function as well as returning a pointer to the setjmp
     jmp_buf buffer, and marked direct access to jmpbuf 'deprecated'.
@@ -2446,18 +759,16 @@
   Reverted the gamma_table changes from libpng-1.4.0beta109.
   Fixed some indentation errors.
 
-version 1.4.0rc07 [December 30, 2009]
+version 1.4.0rc07 [January 1, 2010]
   Revised libpng*.txt and libpng.3 about 1.2.x->1.4.x differences.
+  Use png_calloc() instead of png_malloc(); png_memset() in pngrutil.c
 
-version 1.4.0 [December 30, 2009]
+version 1.4.0 [January 1, 2010]
   No changes.
 
 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
+to subscribe) or to glennrp at users.sourceforge.net
 
 Glenn R-P
-*/ }
-#endif
diff --git a/pngrutil.c b/pngrutil.c
index b04fb9e..f6b318f 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,8 +1,8 @@
 
 /* pngrutil.c - utilities to read a PNG file
  *
- * Last changed in libpng 1.4.0 [December 29, 2009]
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
+ * Last changed in libpng 1.4.0 [January 1, 2010]
+ * Copyright (c) 1998-2010 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
  * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
  *
@@ -3285,9 +3285,12 @@
    if (row_bytes + 48 > png_ptr->old_big_row_buf_size)
    {
      png_free(png_ptr, png_ptr->big_row_buf);
-     png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 48);
      if (png_ptr->interlaced)
-       png_memset(png_ptr->big_row_buf, 0, row_bytes + 48);
+        png_ptr->big_row_buf = (png_bytep)png_calloc(png_ptr,
+            row_bytes + 48);
+     else
+        png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr,
+            row_bytes + 48);
      png_ptr->old_big_row_buf_size = row_bytes + 48;
 
 #ifdef PNG_ALIGNED_MEMORY_SUPPORTED