Imported from libpng-1.0.7beta12.tar
diff --git a/ANNOUNCE b/ANNOUNCE
index 59d5121..a0d0e09 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
 
-Libpng 1.0.7beta11 - May 6, 2000
+Libpng 1.0.7beta12 - May 12, 2000
 
 This is a public release of libpng, intended for use in production codes.
 
@@ -57,9 +57,14 @@
   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.
-  In png_set_text, check if old application had allocated the png_text structure;
-    if so, only allow one text chunk to be processed to avoid memory overrun.
+  Made PNG_NO_ITXT_SUPPORTED 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.
+  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().
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/CHANGES b/CHANGES
index 297d6bf..488b5ef 100644
--- a/CHANGES
+++ b/CHANGES
@@ -729,14 +729,22 @@
   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 6, 2000]
+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_NO_iTXt_SUPPORTED
     or PNG_LEGACY_SUPPORTED is defined.
-  In png_set_text, check if old application had allocated the png_text structure;
-    if so, only allow one text chunk to be processed to avoid memory overrun.
+  Made PNG_NO_ITXT_SUPPORTED 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.
+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().
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/INSTALL b/INSTALL
index 31bf267..3405b87 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.0.7beta11 - May 6, 2000
+Installing libpng version 1.0.7beta12 - May 12, 2000
 
 Before installing libpng, you must first install zlib.  zlib
 can usually be found wherever you got libpng.  zlib can be
@@ -10,7 +10,7 @@
 version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.0.7beta11" or "lpng106" and "zlib-1.1.3"
+might be called "libpng-1.0.7beta12" or "lpng106" and "zlib-1.1.3"
 or "zlib113") so that you have directories called "zlib" and "libpng".
 
 Your directory structure should look like this:
@@ -47,8 +47,8 @@
 include
 
  makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
- makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta11)
- makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta11,
+ makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta12)
+ makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta12,
                        uses assembler code tuned for Intel MMX platform)
  makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)
  makefile.knr      =>  Archaic UNIX Makefile that converts files with
@@ -59,9 +59,9 @@
  makefile.ibmc     =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
  libpng.icc        =>  Project file for IBM VisualAge/C++ version 4.0 or later
  makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
- makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta11)
+ makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta12)
  makefile.sunos    =>  Sun makefile
- makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta11)
+ makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta12)
  makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
  makefile.mips     =>  MIPS makefile
  makefile.acorn    =>  Acorn makefile
diff --git a/LICENSE b/LICENSE
index 6306d87..f71528a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -5,7 +5,7 @@
 Copyright (c) 1996, 1997 Andreas Dilger
 (libpng versions 0.90, December 1996, through 0.96, May 1997)
 Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
-(libpng versions 0.97, January 1998, through 1.0.7beta11, May 6, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta12, May 12, 2000)
 
 For the purposes of this copyright and license, "Contributing Authors"
 is defined as the following set of individuals:
@@ -68,4 +68,4 @@
 
 Glenn Randers-Pehrson
 randeg@alum.rpi.edu
-May 6, 2000
+May 12, 2000
diff --git a/README b/README
index 4cd5a12..85caa8c 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng 1.0.7beta11 - May 6, 2000 (shared library 2.1)
+README for libpng 1.0.7beta12 - May 12, 2000 (shared library 2.1)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -172,9 +172,9 @@
        descrip.mms      =>  VMS makefile for MMS or MMK
        makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
        makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng.so.2.1.0.7beta11)
+                            (gcc, creates libpng.so.2.1.0.7beta12)
        makefile.gcmmx   =>  Linux/ELF makefile (gcc, creates
-                            libpng.so.2.1.0.7beta11, uses assembler code
+                            libpng.so.2.1.0.7beta12, uses assembler code
                             tuned for Intel MMX platform)
        makefile.gcc     =>  Generic makefile (gcc, creates static libpng.a)
        makefile.knr     =>  Archaic UNIX Makefile that converts files with
@@ -185,10 +185,10 @@
        makefile.ibmc    =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
        libpng.icc       =>  Project file, IBM VisualAge/C++ 4.0 or later
        makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
-       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta11)
+       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta12)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng.so.2.1.0.7beta11)
+                            (gcc, creates libpng.so.2.1.0.7beta12)
        makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
        makefile.mips    =>  MIPS makefile
        makefile.acorn   =>  Acorn makefile
diff --git a/Y2KINFO b/Y2KINFO
index ffa82c1..e5f54db 100644
--- a/Y2KINFO
+++ b/Y2KINFO
@@ -1,13 +1,13 @@
    Y2K compliance in libpng:
    =========================
 
-      May 6, 2000
+      May 12, 2000
 
       Since the PNG Development group is an ad-hoc body, we can't make
       an official declaration.
 
       This is your unofficial assurance that libpng from version 0.71 and
-      upward through 1.0.7beta11 are Y2K compliant.  It is my belief that earlier
+      upward through 1.0.7beta12 are Y2K compliant.  It is my belief that earlier
       versions were also Y2K compliant.
 
       Libpng only has three year fields.  One is a 2-byte unsigned integer
diff --git a/configure b/configure
index c7d2002..ee18876 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 echo "
-  There is no \"configure\" script for Libpng-1.0.7beta11.  Instead, please
+  There is no \"configure\" script for Libpng-1.0.7beta12.  Instead, please
   copy the appropriate makefile for your system from the \"scripts\"
   directory.  Read the INSTALL file for more details.
 "
diff --git a/libpng.3 b/libpng.3
index 2906875..75e7ae2 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "May 6, 2000"
+.TH LIBPNG 3 "May 12, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta11
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta12
 .SH SYNOPSIS
 \fI\fB
 
@@ -8,6 +8,10 @@
 
 \fI\fB
 
+\fBpng_uint_32 png_access_version_number \fI(void\fP\fB);\fP
+
+\fI\fB
+
 \fBint png_check_sig (png_bytep \fP\fIsig\fP\fB, int \fInum\fP\fB);\fP
 
 \fI\fB
@@ -739,7 +743,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.7beta11 - May 6, 2000
+ libpng version 1.0.7beta12 - May 12, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -1291,7 +1295,7 @@
     text_ptr[i].key   - keyword for comment.  Must contain
                          1-79 characters.
     text_ptr[i].text  - text comments for current
-                         keyword.  Can empty.
+                         keyword.  Can be empty.
     text_ptr[i].text_length - length of text string,
                  after decompression, 0 for iTXt
     text_ptr[i].itxt_length - length of itxt string,
@@ -1921,15 +1925,17 @@
 point to libpng-allocated storage with the following functions:
 
     png_free_data(png_ptr, info_ptr, mask, n)
-    mask         - identifies data to be freed, a mask
-                   containing the logical OR of one or more of
-                   PNG_FREE_PLTE, PNG_FREE_TRNS,
-                   PNG_FREE_HIST, PNG_FREE_ICCP,
-                   PNG_FREE_SPLT, PNG_FREE_ROWS,
-                   PNG_FREE_TEXT, PNG_FREE_UNKN,
-                   or simply PNG_FREE_ALL
-    n            - sequence number of item to be freed
-                   (-1 for all items)
+    mask - identifies data to be freed, a mask
+           containing the logical OR of one or
+           more of
+             PNG_FREE_PLTE, PNG_FREE_TRNS,
+             PNG_FREE_HIST, PNG_FREE_ICCP,
+             PNG_FREE_PCAL, PNG_FREE_ROWS,
+             PNG_FREE_SCAL, PNG_FREE_SPLT,
+             PNG_FREE_TEXT, PNG_FREE_UNKN,
+           or simply PNG_FREE_ALL
+    n    - sequence number of item to be freed
+           (-1 for all items)
 
 These functions may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
@@ -1945,12 +1951,12 @@
 or png_zalloc() and passed in via a png_set_*() function, with
 
     png_data_freer(png_ptr, info_ptr, freer, mask)
-    mask     - which data elements are affected
-               same choices as in png_free_data()
-    freer    - one of
-                 PNG_DESTROY_WILL_FREE_DATA
-                 PNG_SET_WILL_FREE_DATA
-                 PNG_USER_WILL_FREE_DATA
+    mask   - which data elements are affected
+             same choices as in png_free_data()
+    freer  - one of
+               PNG_DESTROY_WILL_FREE_DATA
+               PNG_SET_WILL_FREE_DATA
+               PNG_USER_WILL_FREE_DATA
 
 This function only affects data that has already been allocated.
 You can call this function after reading the PNG data but before calling
@@ -1959,13 +1965,23 @@
 and again after the png_set_*() functions to control whether the user
 or png_destroy_*() is supposed to free the data.  When the user assumes
 responsibility for libpng-allocated data, the application must use
-png_free() to free it.
+png_free() to free it, and when the user transfers responsibility to libpng
+for data that the user has allocated, the user must have used png_malloc()
+or png_zalloc() to allocate it (the png_zalloc() function is the same
+as png_malloc() except that it also zeroes the newly-allocated memory).
 
 If you allocated your row_pointers in a single block, as suggested above in
 the description of the high level read interface, you must not transfer
 responsibility for freeing it to the png_set_rows or png_read_destroy function,
 because they would also try to free the individual row_pointers[i].
 
+If you allocated text_ptr.text, text_ptr.lang, and text_ptr.translated_keyword
+separately, do not transfer responsibility for freeing text_ptr to libpng,
+because when libpng fills a png_text structure it combines these members with
+the key member, and png_free_data() will free only text_ptr.key.  Similarly,
+if you transfer responsibility for free'ing text_ptr from libpng to your
+application, your application must not separately free those members.
+
 For a more compact example of reading a PNG image, see the file example.c.
 
 .SS Reading PNG files progressively
@@ -2606,7 +2622,8 @@
     PNG_TRANSFORM_SWAP_ENDIAN   Byte-swap 16-bit samples
     PNG_TRANSFORM_STRIP_FILLER  Strip out filler bytes.
 
-If you have valid image data in the info structure, simply do this:
+If you have valid image data in the info structure (you can use
+png_set_rows() to put image data in the info structure), simply do this:
 
     png_write_png(png_ptr, info_ptr, png_transforms, NULL)
 
@@ -2866,15 +2883,17 @@
 point to libpng-allocated storage with the following functions:
 
     png_free_data(png_ptr, info_ptr, mask, n)
-    mask         - identifies data to be freed, a mask
-                   containing the logical OR of one or more of
-                   PNG_FREE_PLTE, PNG_FREE_TRNS,
-                   PNG_FREE_HIST, PNG_FREE_ICCP,
-                   PNG_FREE_SPLT, PNG_FREE_ROWS,
-                   PNG_FREE_TEXT, PNG_FREE_UNKN,
-                   or simply PNG_FREE_ALL
-    n            - sequence number of item to be freed
-                   (-1 for all items)
+    mask  - identifies data to be freed, a mask
+            containing the logical OR of one or
+            more of
+              PNG_FREE_PLTE, PNG_FREE_TRNS,
+              PNG_FREE_HIST, PNG_FREE_ICCP,
+              PNG_FREE_PCAL, PNG_FREE_ROWS,
+              PNG_FREE_SCAL, PNG_FREE_SPLT,
+              PNG_FREE_TEXT, PNG_FREE_UNKN,
+            or simply PNG_FREE_ALL
+    n     - sequence number of item to be freed
+            (-1 for all items)
 
 These functions may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
@@ -2894,12 +2913,12 @@
 or png_zalloc() and passed in via a png_set_*() function, with
 
     png_data_freer(png_ptr, info_ptr, freer, mask)
-    mask     - which data elements are affected
-               same choices as in png_free_data()
-    freer    - one of
-                 PNG_DESTROY_WILL_FREE_DATA
-                 PNG_SET_WILL_FREE_DATA
-                 PNG_USER_WILL_FREE_DATA
+    mask   - which data elements are affected
+             same choices as in png_free_data()
+    freer  - one of
+               PNG_DESTROY_WILL_FREE_DATA
+               PNG_SET_WILL_FREE_DATA
+               PNG_USER_WILL_FREE_DATA
 
 For example, to transfer responsibility for some data from a read structure
 to a write structure, you could use
@@ -2921,8 +2940,17 @@
 You can call this function before calling after the png_set_*() functions
 to control whether the user or png_destroy_*() is supposed to free the data.
 When the user assumes responsibility for libpng-allocated data, the
-application must use png_free() to free it.
+application must use
+png_free() to free it, and when the user transfers responsibility to libpng
+for data that the user has allocated, the user must have used png_malloc()
+or png_zalloc() to allocate it.
 
+If you allocated text_ptr.text, text_ptr.lang, and text_ptr.translated_keyword
+separately, do not transfer responsibility for freeing text_ptr to libpng,
+because when libpng fills a png_text structure it combines these members with
+the key member, and png_free_data() will free only text_ptr.key.  Similarly,
+if you transfer responsibility for free'ing text_ptr from libpng to your
+application, your application must not separately free those members.
 For a more compact example of writing a PNG image, see the file example.c.
 
 .SH V. Modifying/Customizing libpng:
@@ -3312,15 +3340,29 @@
 name to force compilation errors with applications that try to use the old
 method.
 
+Starting with version 1.0.7, you can find out which version of the library
+you are using at run-time:
+
+   png_uint_32 libpng_vn = png_access_version_number();
+
+The number libpng_vn is constructed from the major version, minor
+version with leading zero, and release number with leading zero,
+(e.g., libpng_vn for version 1.0.7 is 10007).
+
+You can also check which version of png.h you used when compiling your
+application:
+
+   png_uint_32 application_vn = PNG_LIBPNG_VER;
+
 .SH VII. Y2K Compliance in libpng
 
-May 6, 2000
+May 12, 2000
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.7beta11 are Y2K compliant.  It is my belief that earlier
+upward through 1.0.7beta12 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
@@ -3461,7 +3503,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.0.7beta11 - May 6, 2000:
+Libpng version 1.0.7beta12 - May 12, 2000:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu).
 
@@ -3476,7 +3518,7 @@
 Copyright (c) 1996, 1997 Andreas Dilger
 (libpng versions 0.89c, May 1996, through 0.96, May 1997)
 Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
-(libpng versions 0.97, January 1998, through 1.0.7beta11, May 6, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta12, May 12, 2000)
 
 For the purposes of this copyright and license, "Contributing Authors"
 is defined as the following set of individuals:
diff --git a/libpng.txt b/libpng.txt
index c223561..90c2de7 100644
--- a/libpng.txt
+++ b/libpng.txt
@@ -1,6 +1,6 @@
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.7beta11 - May 6, 2000
+ libpng version 1.0.7beta12 - May 12, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -552,7 +552,7 @@
     text_ptr[i].key   - keyword for comment.  Must contain
                          1-79 characters.
     text_ptr[i].text  - text comments for current
-                         keyword.  Can empty.
+                         keyword.  Can be empty.
     text_ptr[i].text_length - length of text string,
                  after decompression, 0 for iTXt
     text_ptr[i].itxt_length - length of itxt string,
@@ -1182,15 +1182,17 @@
 point to libpng-allocated storage with the following functions:
 
     png_free_data(png_ptr, info_ptr, mask, n)
-    mask         - identifies data to be freed, a mask
-                   containing the logical OR of one or more of
-                   PNG_FREE_PLTE, PNG_FREE_TRNS,
-                   PNG_FREE_HIST, PNG_FREE_ICCP,
-                   PNG_FREE_SPLT, PNG_FREE_ROWS,
-                   PNG_FREE_TEXT, PNG_FREE_UNKN,
-                   or simply PNG_FREE_ALL
-    n            - sequence number of item to be freed
-                   (-1 for all items)
+    mask - identifies data to be freed, a mask
+           containing the logical OR of one or
+           more of
+             PNG_FREE_PLTE, PNG_FREE_TRNS,
+             PNG_FREE_HIST, PNG_FREE_ICCP,
+             PNG_FREE_PCAL, PNG_FREE_ROWS,
+             PNG_FREE_SCAL, PNG_FREE_SPLT,
+             PNG_FREE_TEXT, PNG_FREE_UNKN,
+           or simply PNG_FREE_ALL
+    n    - sequence number of item to be freed
+           (-1 for all items)
 
 These functions may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
@@ -1206,12 +1208,12 @@
 or png_zalloc() and passed in via a png_set_*() function, with
 
     png_data_freer(png_ptr, info_ptr, freer, mask)
-    mask     - which data elements are affected
-               same choices as in png_free_data()
-    freer    - one of
-                 PNG_DESTROY_WILL_FREE_DATA
-                 PNG_SET_WILL_FREE_DATA
-                 PNG_USER_WILL_FREE_DATA
+    mask   - which data elements are affected
+             same choices as in png_free_data()
+    freer  - one of
+               PNG_DESTROY_WILL_FREE_DATA
+               PNG_SET_WILL_FREE_DATA
+               PNG_USER_WILL_FREE_DATA
 
 This function only affects data that has already been allocated.
 You can call this function after reading the PNG data but before calling
@@ -1220,13 +1222,23 @@
 and again after the png_set_*() functions to control whether the user
 or png_destroy_*() is supposed to free the data.  When the user assumes
 responsibility for libpng-allocated data, the application must use
-png_free() to free it.
+png_free() to free it, and when the user transfers responsibility to libpng
+for data that the user has allocated, the user must have used png_malloc()
+or png_zalloc() to allocate it (the png_zalloc() function is the same
+as png_malloc() except that it also zeroes the newly-allocated memory).
 
 If you allocated your row_pointers in a single block, as suggested above in
 the description of the high level read interface, you must not transfer
 responsibility for freeing it to the png_set_rows or png_read_destroy function,
 because they would also try to free the individual row_pointers[i].
 
+If you allocated text_ptr.text, text_ptr.lang, and text_ptr.translated_keyword
+separately, do not transfer responsibility for freeing text_ptr to libpng,
+because when libpng fills a png_text structure it combines these members with
+the key member, and png_free_data() will free only text_ptr.key.  Similarly,
+if you transfer responsibility for free'ing text_ptr from libpng to your
+application, your application must not separately free those members.
+
 For a more compact example of reading a PNG image, see the file example.c.
 
 Reading PNG files progressively
@@ -1867,7 +1879,8 @@
     PNG_TRANSFORM_SWAP_ENDIAN   Byte-swap 16-bit samples
     PNG_TRANSFORM_STRIP_FILLER  Strip out filler bytes.
 
-If you have valid image data in the info structure, simply do this:
+If you have valid image data in the info structure (you can use
+png_set_rows() to put image data in the info structure), simply do this:
 
     png_write_png(png_ptr, info_ptr, png_transforms, NULL)
 
@@ -2127,15 +2140,17 @@
 point to libpng-allocated storage with the following functions:
 
     png_free_data(png_ptr, info_ptr, mask, n)
-    mask         - identifies data to be freed, a mask
-                   containing the logical OR of one or more of
-                   PNG_FREE_PLTE, PNG_FREE_TRNS,
-                   PNG_FREE_HIST, PNG_FREE_ICCP,
-                   PNG_FREE_SPLT, PNG_FREE_ROWS,
-                   PNG_FREE_TEXT, PNG_FREE_UNKN,
-                   or simply PNG_FREE_ALL
-    n            - sequence number of item to be freed
-                   (-1 for all items)
+    mask  - identifies data to be freed, a mask
+            containing the logical OR of one or
+            more of
+              PNG_FREE_PLTE, PNG_FREE_TRNS,
+              PNG_FREE_HIST, PNG_FREE_ICCP,
+              PNG_FREE_PCAL, PNG_FREE_ROWS,
+              PNG_FREE_SCAL, PNG_FREE_SPLT,
+              PNG_FREE_TEXT, PNG_FREE_UNKN,
+            or simply PNG_FREE_ALL
+    n     - sequence number of item to be freed
+            (-1 for all items)
 
 These functions may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
@@ -2155,12 +2170,12 @@
 or png_zalloc() and passed in via a png_set_*() function, with
 
     png_data_freer(png_ptr, info_ptr, freer, mask)
-    mask     - which data elements are affected
-               same choices as in png_free_data()
-    freer    - one of
-                 PNG_DESTROY_WILL_FREE_DATA
-                 PNG_SET_WILL_FREE_DATA
-                 PNG_USER_WILL_FREE_DATA
+    mask   - which data elements are affected
+             same choices as in png_free_data()
+    freer  - one of
+               PNG_DESTROY_WILL_FREE_DATA
+               PNG_SET_WILL_FREE_DATA
+               PNG_USER_WILL_FREE_DATA
 
 For example, to transfer responsibility for some data from a read structure
 to a write structure, you could use
@@ -2182,8 +2197,17 @@
 You can call this function before calling after the png_set_*() functions
 to control whether the user or png_destroy_*() is supposed to free the data.
 When the user assumes responsibility for libpng-allocated data, the
-application must use png_free() to free it.
+application must use
+png_free() to free it, and when the user transfers responsibility to libpng
+for data that the user has allocated, the user must have used png_malloc()
+or png_zalloc() to allocate it.
 
+If you allocated text_ptr.text, text_ptr.lang, and text_ptr.translated_keyword
+separately, do not transfer responsibility for freeing text_ptr to libpng,
+because when libpng fills a png_text structure it combines these members with
+the key member, and png_free_data() will free only text_ptr.key.  Similarly,
+if you transfer responsibility for free'ing text_ptr from libpng to your
+application, your application must not separately free those members.
 For a more compact example of writing a PNG image, see the file example.c.
 
 V. Modifying/Customizing libpng:
@@ -2573,15 +2597,29 @@
 name to force compilation errors with applications that try to use the old
 method.
 
+Starting with version 1.0.7, you can find out which version of the library
+you are using at run-time:
+
+   png_uint_32 libpng_vn = png_access_version_number();
+
+The number libpng_vn is constructed from the major version, minor
+version with leading zero, and release number with leading zero,
+(e.g., libpng_vn for version 1.0.7 is 10007).
+
+You can also check which version of png.h you used when compiling your
+application:
+
+   png_uint_32 application_vn = PNG_LIBPNG_VER;
+
 VII. Y2K Compliance in libpng
 
-May 6, 2000
+May 12, 2000
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.7beta11 are Y2K compliant.  It is my belief that earlier
+upward through 1.0.7beta12 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
diff --git a/libpngpf.3 b/libpngpf.3
index 79c54aa..d778d5f 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "May 6, 2000"
+.TH LIBPNGPF 3 "May 12, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta11
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta12
 (private functions)
 .SH SYNOPSIS
 \fB#include <png.h>\fP
diff --git a/png.5 b/png.5
index 479cf00..d5462ae 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "May 6, 2000"
+.TH PNG 5 "May 12, 2000"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index 0b4cc05..26db4f2 100644
--- a/png.c
+++ b/png.c
@@ -1,7 +1,7 @@
 
 /* png.c - location for general purpose libpng functions
  *
- * libpng version 1.0.7beta11 - May 6, 2000
+ * libpng version 1.0.7beta12 - May 12, 2000
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -14,14 +14,14 @@
 #include "png.h"
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_7beta11 Your_png_h_is_not_version_1_0_7beta11;
+typedef version_1_0_7beta12 Your_png_h_is_not_version_1_0_7beta12;
 
 /* Version information for C files.  This had better match the version
  * string defined in png.h.  */
 
 #ifdef PNG_USE_GLOBAL_ARRAYS
 /* png_libpng_ver was changed to a function in version 1.0.5c */
-char png_libpng_ver[12] = "1.0.7beta11";
+char png_libpng_ver[12] = "1.0.7beta12";
 
 /* png_sig was changed to a function in version 1.0.5c */
 /* Place to hold the signature string for a PNG file. */
@@ -290,6 +290,8 @@
 /* free text item num or (if num == -1) all text items */
 #ifdef PNG_FREE_ME_SUPPORTED
 if (mask & info_ptr->free_me & PNG_FREE_TEXT)
+#else
+if (mask & PNG_FREE_TEXT)
 #endif
 {
    if (num != -1)
@@ -314,15 +316,14 @@
 
 #if defined(PNG_tRNS_SUPPORTED)
 /* free any tRNS entry */
-if (mask & PNG_FREE_TRNS)
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & PNG_FREE_TRNS & info_ptr->free_me)
+#else
+if ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS))
+#endif
 {
    if (info_ptr->valid & PNG_INFO_tRNS)
    {
-#ifdef PNG_FREE_ME_SUPPORTED
-       if (info_ptr->free_me & PNG_FREE_TRNS)
-#else
-       if (png_ptr->flags & PNG_FLAG_FREE_TRNS)
-#endif
          png_free(png_ptr, info_ptr->trans);
        info_ptr->valid &= ~PNG_INFO_tRNS;
    }
@@ -331,6 +332,11 @@
 
 #if defined(PNG_sCAL_SUPPORTED)
 /* free any sCAL entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & PNG_FREE_SCAL & info_ptr->free_me)
+#else
+if (mask & PNG_FREE_SCAL)
+#endif
 {
    if (info_ptr->valid & PNG_INFO_sCAL)
    {
@@ -345,6 +351,11 @@
 
 #if defined(PNG_pCAL_SUPPORTED)
 /* free any pCAL entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & PNG_FREE_PCAL & info_ptr->free_me)
+#else
+if (mask & PNG_FREE_PCAL)
+#endif
 {
    if (info_ptr->valid & PNG_INFO_pCAL)
    {
@@ -366,17 +377,16 @@
 
 #if defined(PNG_iCCP_SUPPORTED)
 /* free any iCCP entry */
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & PNG_FREE_ICCP & info_ptr->free_me)
+#else
 if (mask & PNG_FREE_ICCP)
+#endif
 {
    if (info_ptr->valid & PNG_INFO_iCCP)
    {
-#ifdef PNG_FREE_ME_SUPPORTED
-       if (info_ptr->free_me & PNG_FREE_ICCP)
-#endif
-       {
-         png_free(png_ptr, info_ptr->iccp_name);
-         png_free(png_ptr, info_ptr->iccp_profile);
-       }
+       png_free(png_ptr, info_ptr->iccp_name);
+       png_free(png_ptr, info_ptr->iccp_profile);
        info_ptr->valid &= ~PNG_INFO_iCCP;
    }
 }
@@ -384,7 +394,11 @@
 
 #if defined(PNG_sPLT_SUPPORTED)
 /* free a given sPLT entry, or (if num == -1) all sPLT entries */
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & PNG_FREE_SPLT & info_ptr->free_me)
+#else
 if (mask & PNG_FREE_SPLT)
+#endif
 {
    if (num != -1)
    {
@@ -408,7 +422,11 @@
 #endif
 
 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & info_ptr->free_me & PNG_FREE_UNKN)
+#else
 if (mask & PNG_FREE_UNKN)
+#endif
 {
    if (num != -1)
    {
@@ -433,32 +451,30 @@
 
 #if defined(PNG_hIST_SUPPORTED)
 /* free any hIST entry */
-if (mask & PNG_FREE_HIST)
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & PNG_FREE_HIST  & info_ptr->free_me)
+#else
+if ((mask & PNG_FREE_HIST) && (png_ptr->flags & PNG_FLAG_FREE_HIST))
+#endif
 {
    if (info_ptr->valid & PNG_INFO_hIST)
    {
-#ifdef PNG_FREE_ME_SUPPORTED
-       if (info_ptr->free_me & PNG_FREE_HIST)
-#else
-       if (png_ptr->flags & PNG_FLAG_FREE_HIST)
-#endif
-         png_free(png_ptr, info_ptr->hist);
+       png_free(png_ptr, info_ptr->hist);
        info_ptr->valid &= ~PNG_INFO_hIST;
    }
 }
 #endif
 
 /* free any PLTE entry that was internally allocated */
-if (mask & PNG_FREE_PLTE)
+#ifdef PNG_FREE_ME_SUPPORTED
+if (mask & PNG_FREE_PLTE & info_ptr->free_me)
+#else
+if ((mask & PNG_FREE_PLTE) && (png_ptr->flags & PNG_FLAG_FREE_PLTE))
+#endif
 {
    if (info_ptr->valid & PNG_INFO_PLTE)
    {
-#ifdef PNG_FREE_ME_SUPPORTED
-       if (info_ptr->free_me & PNG_FREE_PLTE)
-#else
-       if (png_ptr->flags & PNG_FLAG_FREE_PLTE)
-#endif
-          png_zfree(png_ptr, info_ptr->palette);
+       png_zfree(png_ptr, info_ptr->palette);
        info_ptr->valid &= ~(PNG_INFO_PLTE);
        info_ptr->num_palette = 0;
    }
@@ -466,18 +482,20 @@
 
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
 /* free any image bits attached to the info structure */
-if (mask & PNG_FREE_ROWS)
-{
 #ifdef PNG_FREE_ME_SUPPORTED
-   if (info_ptr->free_me & PNG_FREE_ROWS)
+if (mask & info_ptr->free_me & PNG_FREE_ROWS)
+#else
+if (mask & PNG_FREE_ROWS)
 #endif
-   {
+{
+    if(info_ptr->row_pointers)
+    {
        int row;
-
        for (row = 0; row < (int)info_ptr->height; row++)
           png_free(png_ptr, info_ptr->row_pointers[row]);
        png_free(png_ptr, info_ptr->row_pointers);
-   }
+       info_ptr->row_pointers=NULL;
+    }
 }
 #endif
 #ifdef PNG_FREE_ME_SUPPORTED
@@ -583,7 +601,7 @@
 png_get_copyright(png_structp png_ptr)
 {
    if (png_ptr != NULL || png_ptr == NULL)  /* silence compiler warning */
-   return ("\n libpng version 1.0.7beta11 - May 6, 2000\n\
+   return ("\n libpng version 1.0.7beta12 - May 12, 2000\n\
    Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.\n\
    Copyright (c) 1996, 1997 Andreas Dilger\n\
    Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson\n");
@@ -601,8 +619,8 @@
 {
    /* Version of *.c files used when building libpng */
    if(png_ptr != NULL) /* silence compiler warning about unused png_ptr */
-      return("1.0.7beta11");
-   return("1.0.7beta11");
+      return("1.0.7beta12");
+   return("1.0.7beta12");
 }
 
 png_charp PNGAPI
@@ -646,3 +664,10 @@
 {
    return (inflateReset(&png_ptr->zstream));
 }
+
+png_uint_32 PNGAPI
+png_access_version_number(void)
+{
+   /* Version of *.c files used when building libpng */
+   return((png_uint_32) 10007L);
+}
diff --git a/png.h b/png.h
index 09af919..880c422 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.0.7beta11 - May 6, 2000
+ * libpng version 1.0.7beta12 - May 12, 2000
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -9,7 +9,7 @@
  * Authors and maintainers:
  *  libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
  *  libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- *  libpng versions 0.97, January 1998, through 1.0.7beta11 - May 6, 2000: Glenn
+ *  libpng versions 0.97, January 1998, through 1.0.7beta12 - May 12, 2000: Glenn
  *  See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -52,7 +52,7 @@
  *    1.0.6h                        10007  10.6h (testing xy.z so-numbering)
  *    1.0.6i                        10007  10.6i
  *    1.0.6j                        10007  2.1.0.6j (incompatible with 1.0.0)
- *    1.0.7beta11                   10007  2.1.0.7beta11 (still compatible)
+ *    1.0.7beta11-12                10007  2.1.0.7beta11-12 (still compatible)
  *    planned:
  *    1.0.7prep00                   10007  2.1.0.7prep00 (still compatible)
  *    1.0.6ptch04 (w/4 patches)     10006  2.1.0.6 (binary compatible)
@@ -87,7 +87,7 @@
  * Copyright (c) 1996, 1997 Andreas Dilger
  * (libpng versions 0.89c, June 1996, through 0.96, May 1997)
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
- * (libpng versions 0.97, January 1998, through 1.0.7beta11, May 6, 2000)
+ * (libpng versions 0.97, January 1998, through 1.0.7beta12, May 12, 2000)
  *
  * For the purposes of this copyright and license, "Contributing Authors"
  * is defined as the following set of individuals:
@@ -162,13 +162,13 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    May 6, 2000
+ *    May 12, 2000
  *
  *    Since the PNG Development group is an ad-hoc body, we can't make
  *    an official declaration.
  *
  *    This is your unofficial assurance that libpng from version 0.71 and
- *    upward through 1.0.7beta11 are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.0.7beta12 are Y2K compliant.  It is my belief that earlier
  *    versions were also Y2K compliant.
  *
  *    Libpng only has three year fields.  One is a 2-byte unsigned integer
@@ -223,6 +223,30 @@
  * at the actual function definitions and structure components.
  */
 
+/* Version information for png.h - this should match the version in png.c */
+#define PNG_LIBPNG_VER_STRING "1.0.7beta12"
+
+#define PNG_LIBPNG_VER_SONUM   2
+
+/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
+#define PNG_LIBPNG_VER_MAJOR   1
+#define PNG_LIBPNG_VER_MINOR   0
+#define PNG_LIBPNG_VER_RELEASE 7
+/* This should match the numeric part of the final component of
+ * PNG_LIBPNG_VER_STRING, omitting any leading zero: */
+#define PNG_LIBPNG_VER_BUILD   12
+
+/* Careful here.  At one time, Guy wanted to use 082, but that would be octal.
+ * We must not include leading zeros.
+ * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
+ * version 1.0.0 was mis-numbered 100 instead of 10000).  From
+ * version 1.0.1 it's    xxyyzz, where x=major, y=minor, z=release */
+#define PNG_LIBPNG_VER 10007 /* 1.0.7 */
+
+/* Note to maintainer: update this number in scripts/pngdef.pas as well */
+
+#ifndef PNG_VERSION_INFO_ONLY
+
 /* include the compression library's header */
 #include "zlib.h"
 
@@ -245,18 +269,6 @@
  * which applications aren't expected to use directly.
  */
 
-/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.0.7beta11"
-
-/* Careful here.  At one time, Guy wanted to use 082, but that would be octal.
- * We must not include leading zeros.
- * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
- * version 1.0.0 was mis-numbered 100 instead of 10000).  From
- * version 1.0.1 it's    xxyyzz, where x=major, y=minor, z=bugfix */
-#define PNG_LIBPNG_VER    10007  /* 1.0.7 */
-
-/* Note to maintainer: update this number in scripts/pngdef.pas as well */
-
 /* variables declared in png.c - only it needs to define PNG_NO_EXTERN */
 #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
 /* Version information for C files, stored in png.c.  This had better match
@@ -1111,9 +1123,9 @@
 };
 
 /* This prevents a compiler error in png_get_copyright() in png.c if png.c
-and png.h are both at * version 1.0.7beta11
+and png.h are both at * version 1.0.7beta12
  */
-typedef png_structp version_1_0_7beta11;
+typedef png_structp version_1_0_7beta12;
 
 typedef png_struct FAR * FAR * png_structpp;
 
@@ -1123,6 +1135,9 @@
  * a simple one line description of the use of each function.
  */
 
+/* Returns the version number of the library */
+extern PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void));
+
 /* Tell lib we have already handled the first <num_bytes> magic bytes.
  * Handling more than 8 bytes from the beginning of the file is an error.
  */
@@ -1675,14 +1690,14 @@
 #define PNG_FREE_ICCP 0x0010
 #define PNG_FREE_SPLT 0x0020
 #define PNG_FREE_ROWS 0x0040
-#define PNG_FREE_PCAL 0x0080 /* not used any more */
-#define PNG_FREE_SCAL 0x0100 /* not used any more */
+#define PNG_FREE_PCAL 0x0080
+#define PNG_FREE_SCAL 0x0100
 #define PNG_FREE_UNKN 0x0200
 #define PNG_FREE_LIST 0x0400
 #define PNG_FREE_PLTE 0x1000
 #define PNG_FREE_TRNS 0x2000
 #define PNG_FREE_TEXT 0x4000
-#define PNG_FREE_ALL  0x3fff
+#define PNG_FREE_ALL  0x7fff
 
 #ifdef PNG_USER_MEM_SUPPORTED
 extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
@@ -2080,19 +2095,28 @@
  */
 #ifdef PNG_DEBUG
 #if (PNG_DEBUG > 0)
+#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER)
+#include <crtdbg.h>
+#define png_debug(l,m) if (PNG_DEBUG > l) _RPT0(_CRT_WARN,m)
+#define png_debug1(l,m,p1) if (PNG_DEBUG > l) _RPT1(_CRT_WARN,m,p1)
+#define png_debug2(l,m,p1,p2) if (PNG_DEBUG > l) _RPT2(_CRT_WARN,m,p1,p2)
+#else /* PNG_DEBUG_FILE || !_MSC_VER */
 #ifndef PNG_DEBUG_FILE
 #define PNG_DEBUG_FILE stderr
 #endif /* PNG_DEBUG_FILE */
-
-#define png_debug(l,m)        if (PNG_DEBUG > l) \
-                                 fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
-                                    (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))))
-#define png_debug1(l,m,p1)    if (PNG_DEBUG > l) \
-                                 fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
-                                    (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))),p1)
-#define png_debug2(l,m,p1,p2) if (PNG_DEBUG > l) \
-                                 fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
-                                    (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))),p1,p2)
+#define png_debug(l,m) \
+   if (PNG_DEBUG > l)  \
+     fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
+       (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))))
+#define png_debug1(l,m,p1) \
+   if (PNG_DEBUG > l) \
+     fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
+       (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))),p1)
+#define png_debug2(l,m,p1,p2) \
+   if (PNG_DEBUG > l) \
+     fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
+       (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))),p1,p2)
+#endif /* _MSC_VER */
 #endif /* (PNG_DEBUG > 0) */
 #endif /* PNG_DEBUG */
 #ifndef png_debug
@@ -2113,7 +2137,7 @@
 extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
 
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.0.7beta11 - May 6, 2000 (header)\n"
+   " libpng version 1.0.7beta12 - May 12, 2000 (header)\n"
 
 #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
 /* With these routines we avoid an integer divide, which will be slower on
@@ -2905,5 +2929,6 @@
 }
 #endif
 
+#endif /* PNG_VERSION_INFO_ONLY */
 /* do not put anything past this line */
 #endif /* _PNG_H */
diff --git a/pngasmrd.h b/pngasmrd.h
index 8275c86..92d7cc7 100644
--- a/pngasmrd.h
+++ b/pngasmrd.h
@@ -1,6 +1,6 @@
 /* pngasmrd.h - assembler version of utilities to read a PNG file
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1999, 2000 Glenn Randers-Pehrson
  *
diff --git a/pngconf.h b/pngconf.h
index ae738ee..7188b30 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,6 +1,6 @@
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -58,6 +58,14 @@
  * #define PNG_NO_STDIO
  */
 
+#ifdef PNG_BUILD_DLL
+#  ifndef PNG_CONSOLE_IO_SUPPORTED
+#    ifndef PNG_NO_CONSOLE_IO
+#      define PNG_NO_CONSOLE_IO
+#    endif
+#  endif
+#endif
+
 #  ifdef PNG_NO_STDIO
 #    ifndef PNG_NO_CONSOLE_IO
 #      define PNG_NO_CONSOLE_IO
@@ -987,34 +995,9 @@
 #  define PNG_ATTR_DLLIMP
 #endif
 
-#ifndef PNG_EXPORT
-#  define PNG_EXPORT(type,symbol) type symbol
-#endif
-
-#if defined(__MINGW32__) || defined(__CYGWIN32__)
-#  define PNG_ATTR_DLLIMP
-#endif
-
 #ifdef PNG_USE_GLOBAL_ARRAYS
 #ifndef PNG_EXPORT_VAR
-#  if defined(_MSC_VER) && defined(_DLL)   /* GRR 20000206 */
-#    define PNG_EXPORT_VAR(type) extern type __declspec(dllexport)
-#  endif
-#  ifdef PNG_DECL_DLLEXP
-#    define PNG_EXPORT_VAR(type) extern __declspec(dllexport) type
-#  endif
-#  ifdef PNG_ATTR_DLLEXP
-#    define PNG_EXPORT_VAR(type) extern type __attribute__((dllexport))
-#  endif
-#  ifdef PNG_DECL_DLLIMP
-#    define PNG_EXPORT_VAR(type) extern __declspec(dllimport) type
-#  endif
-#  ifdef PNG_ATTR_DLLIMP
-#    define PNG_EXPORT_VAR(type) extern type __attribute__((dllimport))
-#  endif
-#endif
-#ifndef PNG_EXPORT_VAR
-#    define PNG_EXPORT_VAR(type) extern type
+#  define PNG_EXPORT_VAR(type) extern type
 #endif
 #endif
 
diff --git a/pngerror.c b/pngerror.c
index 0555ae7..17c100f 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,7 +1,7 @@
 
 /* pngerror.c - stub functions for i/o and memory allocation
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pnggccrd.c b/pnggccrd.c
index afd3f8c..87ddc79 100644
--- a/pnggccrd.c
+++ b/pnggccrd.c
@@ -6,7 +6,7 @@
  *     and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
  *     for Intel's performance analysis of the MMX vs. non-MMX code.
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998, Intel Corporation
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -230,7 +230,7 @@
 /* Use this routine for the x86 platform - it uses a faster MMX routine
    if the machine supports MMX. */
 
-void PNGAPI
+void /* PRIVATE */
 png_combine_row(png_structp png_ptr, png_bytep row, int mask)
 {
    png_debug(1,"in png_combine_row_asm\n");
@@ -4310,7 +4310,7 @@
 
 // Optimized png_read_filter_row routines
 
-void PNGAPI
+void /* PRIVATE */
 png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep
    row, png_bytep prev_row, int filter)
 {
diff --git a/pngget.c b/pngget.c
index 548adb6..8f43cbf 100644
--- a/pngget.c
+++ b/pngget.c
@@ -1,7 +1,7 @@
 
 /* pngget.c - retrieval of values from info struct
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngmem.c b/pngmem.c
index 66f83f2..9204f70 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngpread.c b/pngpread.c
index 0532bf9..9a553dc 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,7 +1,7 @@
 
 /* pngpread.c - read a png file in push mode
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngread.c b/pngread.c
index 2931089..86c89ce 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,7 +1,7 @@
 
 /* pngread.c - read a PNG file
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -697,7 +697,7 @@
  * not called png_set_interlace_handling(), the display_row buffer will
  * be ignored, so pass NULL to it.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta11
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta12
  */
 
 void PNGAPI
@@ -746,7 +746,7 @@
  * only call this function once.  If you desire to have an image for
  * each pass of a interlaced image, use png_read_rows() instead.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta11
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta12
  */
 void PNGAPI
 png_read_image(png_structp png_ptr, png_bytepp image)
@@ -1293,18 +1293,9 @@
 
    /* -------------- image transformations end here ------------------- */
 
-   if(info_ptr->row_pointers)
-   {
 #ifdef PNG_FREE_ME_SUPPORTED
-      if(info_ptr->free_me & PNG_FREE_ROWS)
-      {
-         for (row = 0; row < (int)info_ptr->height; row++)
-            png_free(png_ptr, info_ptr->row_pointers[row]);
-         png_free(png_ptr, info_ptr->row_pointers);
-         info_ptr->row_pointers = NULL;
-      }
+   png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
 #endif
-   }
    if(info_ptr->row_pointers == NULL)
    {
       info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
diff --git a/pngrio.c b/pngrio.c
index a8024a4..8dbd6e8 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -1,7 +1,7 @@
 
 /* pngrio.c - functions for data input
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngrtran.c b/pngrtran.c
index 3c262e7..f5b7b7c 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1,7 +1,7 @@
 
 /* pngrtran.c - transforms the data in a row for PNG readers
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngrutil.c b/pngrutil.c
index c28e69d..e9893ff 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,7 +1,7 @@
 
 /* pngrutil.c - utilities to read a PNG file
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -2043,9 +2043,9 @@
    you want all pixels to be combined, pass 0xff (255) in mask.  */
 void /* PRIVATE */
 #ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROW
-png_combine_row_c /* PRIVATE */
+png_combine_row_c
 #else
-png_combine_row /* PRIVATE */
+png_combine_row
 #endif /* PNG_HAVE_ASSEMBLER_COMBINE_ROW */
    (png_structp png_ptr, png_bytep row, int mask)
 {
diff --git a/pngset.c b/pngset.c
index 971c335..eeaff22 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1,7 +1,7 @@
 
 /* pngset.c - storage of image information into info struct
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -240,6 +240,9 @@
    }
 
    info_ptr->valid |= PNG_INFO_pCAL;
+#ifdef PNG_FREE_ME_SUPPORTED
+   info_ptr->free_me |= PNG_FREE_PCAL;
+#endif
 }
 #endif
 
@@ -284,6 +287,9 @@
    png_memcpy(info_ptr->scal_s_height, sheight, (png_size_t)length);
 
    info_ptr->valid |= PNG_INFO_sCAL;
+#ifdef PNG_FREE_ME_SUPPORTED
+   info_ptr->free_me |= PNG_FREE_SCAL;
+#endif
 }
 #endif
 #endif
@@ -488,6 +494,9 @@
          info_ptr->num_text = 0;
          info_ptr->text = (png_textp)png_malloc(png_ptr,
             (png_uint_32)(info_ptr->max_text * sizeof (png_text)));
+#ifdef PNG_FREE_ME_SUPPORTED
+         info_ptr->free_me |= PNG_FREE_TEXT;
+#endif
       }
       png_debug1(3, "allocated %d entries for info_ptr->text\n",
          info_ptr->max_text);
@@ -495,9 +504,7 @@
    for (i = 0; i < num_text; i++)
    {
       png_size_t text_length,key_len;
-#ifdef PNG_iTXt_SUPPORTED
       png_size_t lang_len,lang_key_len;
-#endif
       png_textp textp = &(info_ptr->text[info_ptr->num_text]);
 
       if (text_ptr[i].key == (png_charp)NULL)
@@ -505,7 +512,12 @@
 
       key_len = png_strlen(text_ptr[i].key);
 
-      if(text_ptr[i].compression > 0)
+      if(text_ptr[i].compression <= 0)
+      {
+        lang_len = 0;
+        lang_key_len = 0;
+      }
+      else
 #ifdef PNG_iTXt_SUPPORTED
       {
         /* set iTXt data */
@@ -518,11 +530,6 @@
         else
           lang_key_len = 0;
       }
-      else
-      {
-        lang_len = 0;
-        lang_key_len = 0;
-      }
 #else
       {
         png_warning(png_ptr, "iTXt chunk not supported.");
@@ -547,17 +554,9 @@
       }
 
       textp->key = (png_charp)png_malloc(png_ptr,
-         (png_uint_32)(key_len +
-#ifdef PNG_iTXt_SUPPORTED
-            lang_len + lang_key_len +
-#endif
-            text_length + 4));
+         (png_uint_32)(key_len + text_length + lang_len + lang_key_len + 4));
       png_debug2(2, "Allocated %d bytes at %x in png_set_text\n",
-         key_len + 
-#ifdef PNG_iTXt_SUPPORTED
-         lang_len + lang_key_len +
-#endif
-         text_length + 4, textp->key);
+         key_len + lang_len + lang_key_len + text_length + 4, textp->key);
 
       png_memcpy(textp->key, text_ptr[i].key,
          (png_size_t)(key_len));
@@ -603,9 +602,6 @@
       }
       info_ptr->text[info_ptr->num_text]= *textp;
       info_ptr->num_text++;
-#ifdef PNG_FREE_ME_SUPPORTED
-      info_ptr->free_me |= PNG_FREE_TEXT;
-#endif
       png_debug1(3, "transferred text chunk %d\n", info_ptr->num_text);
    }
 }
diff --git a/pngtest.c b/pngtest.c
index 08ff399..a3acd9f 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1,7 +1,7 @@
 
 /* pngtest.c - a simple test program to test libpng
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -1152,9 +1152,11 @@
    fprintf(STDERR, "   with zlib   version %s\n", ZLIB_VERSION);
    fprintf(STDERR,"%s",png_get_copyright(NULL));
    /* Show the version of libpng used in building the library */
-   fprintf(STDERR," library:%s",png_get_header_version(NULL));
+   fprintf(STDERR," library (%lu):%s", png_access_version_number(),
+      png_get_header_version(NULL));
    /* Show the version of libpng used in building the application */
-   fprintf(STDERR," pngtest:%s",PNG_HEADER_VERSION_STRING);
+   fprintf(STDERR," pngtest (%lu):%s", PNG_LIBPNG_VER,
+      PNG_HEADER_VERSION_STRING);
    fprintf(STDERR," sizeof(png_struct)=%d, sizeof(png_info)=%d\n",
                     sizeof(png_struct), sizeof(png_info));
 
@@ -1378,4 +1380,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_7beta11 your_png_h_is_not_version_1_0_7beta11;
+typedef version_1_0_7beta12 your_png_h_is_not_version_1_0_7beta12;
diff --git a/pngtrans.c b/pngtrans.c
index f4bd1f3..e303da4 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -1,7 +1,7 @@
 
 /* pngtrans.c - transforms the data in a row (used by both readers and writers)
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngvcrd.c b/pngvcrd.c
index 9633852..5c3a778 100644
--- a/pngvcrd.c
+++ b/pngvcrd.c
@@ -2,7 +2,7 @@
  *
  * For Intel x86 CPU and Microsoft Visual C++ compiler
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998, Intel Corporation
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
diff --git a/pngwio.c b/pngwio.c
index 0dae25e..f742054 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -1,7 +1,7 @@
 
 /* pngwio.c - functions for data output
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngwrite.c b/pngwrite.c
index 30bd1ee..207ca82 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -1,7 +1,7 @@
 
 /* pngwrite.c - general routines to write a PNG file
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -1245,8 +1245,7 @@
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
 void PNGAPI
 png_write_png(png_structp png_ptr, png_infop info_ptr,
-                           int transforms,
-                           voidp params)
+              int transforms, voidp params)
 {
 #if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
    /* invert the alpha channel from opacity to transparency */
diff --git a/pngwtran.c b/pngwtran.c
index f5ae900..41625cc 100644
--- a/pngwtran.c
+++ b/pngwtran.c
@@ -1,7 +1,7 @@
 
 /* pngwtran.c - transforms the data in a row for PNG writers
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngwutil.c b/pngwutil.c
index b1273e5..3254a5d 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,7 +1,7 @@
 
 /* pngwutil.c - utilities to write a PNG file
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/scripts/makefile.beos b/scripts/makefile.beos
index a007939..f67a9a0 100644
--- a/scripts/makefile.beos
+++ b/scripts/makefile.beos
@@ -31,7 +31,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.7beta11
+PNGMIN = 1.0.7beta12
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # where make install puts libpng.a, libpng.so*, and png.h
diff --git a/scripts/makefile.dec b/scripts/makefile.dec
index 5c3d423..865037b 100644
--- a/scripts/makefile.dec
+++ b/scripts/makefile.dec
@@ -14,7 +14,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.7beta11
+PNGMIN = 1.0.7beta12
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 CC=cc
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index cb20398..8e2daef 100644
--- a/scripts/makefile.gcmmx
+++ b/scripts/makefile.gcmmx
@@ -34,7 +34,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.7beta11
+PNGMIN = 1.0.7beta12
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index 6aaaecc..7520c26 100644
--- a/scripts/makefile.linux
+++ b/scripts/makefile.linux
@@ -34,7 +34,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.7beta11
+PNGMIN = 1.0.7beta12
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index 43b4712..3563ef5 100644
--- a/scripts/makefile.sco
+++ b/scripts/makefile.sco
@@ -25,7 +25,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.7beta11
+PNGMIN = 1.0.7beta12
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index 7a15823..1c43841 100644
--- a/scripts/makefile.sggcc
+++ b/scripts/makefile.sggcc
@@ -19,8 +19,8 @@
 LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
 LDSHARED=gcc -shared
 
-VER=1.0.7beta11
-LIBS=libpng.so.1.0.7beta11
+VER=1.0.7beta12
+LIBS=libpng.so.1.0.7beta12
 SHAREDLIB=libpng.so
 libdir=$(prefix)/lib32
 
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index c52abcf..9eb8292 100644
--- a/scripts/makefile.solaris
+++ b/scripts/makefile.solaris
@@ -31,7 +31,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.7beta11
+PNGMIN = 1.0.7beta12
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/pngdef.pas b/scripts/pngdef.pas
index 2991c54..69a83e0 100644
--- a/scripts/pngdef.pas
+++ b/scripts/pngdef.pas
@@ -1,9 +1,11 @@
 unit pngdef;
 
+// Caution: this file is probably out of date.
+
 interface
 
 const
-  PNG_LIBPNG_VER_STRING = '1.0.7beta11';
+  PNG_LIBPNG_VER_STRING = '1.0.7beta12';
   PNG_LIBPNG_VER        =  10007;
 
 type
diff --git a/scripts/pngos2.def b/scripts/pngos2.def
index 0c0316d..e2478da 100644
--- a/scripts/pngos2.def
+++ b/scripts/pngos2.def
@@ -2,6 +2,8 @@
 ; PNGLIB module definition file for OS/2
 ;----------------------------------------
 
+; Caution: This file is probably out of date.
+
 LIBRARY		PNG
 DESCRIPTION	"PNG image compression library for OS/2"
 CODE		PRELOAD MOVEABLE DISCARDABLE