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
