
Libpng 1.0.12beta1 - May 14, 2001

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

Changes since the last public release (1.0.11):

  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.
  Bumped DLLNUM to 2.
  Added a check for attempts to read or write PLTE in grayscale PNG datastreams.
  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 achieves future binary compatibility for old applications written for
    libpng-0.88 and earlier.
  Modified png_create_struct so it passes user mem_ptr to user memory allocator.

Send comments/corrections/commendations to
png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu

Glenn R-P
