Imported from libpng-1.0.7beta14.tar
diff --git a/ANNOUNCE b/ANNOUNCE
index 3c256ea..d859d97 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
 
-Libpng 1.0.7beta13 - May 16, 2000
+Libpng 1.0.7beta14 - May 17, 2000
 
 This is a public release of libpng, intended for use in production codes.
 
@@ -72,6 +72,9 @@
   Made the default PNG_USE_LOCAL_ARRAYS depend on PNG_DLL instead of WIN32.
   Make png_free_data() ignore its final parameter when freeing data that can
     have multiple instances (text, sPLT, unknowns).
+  Removed info_ptr->valid tests from png_free_data(), as in version 1.0.5.
+  Added png_set_invalid() function.
+  Fixed incorrect illustrations of png_destroy_write_struct() in example.c.
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/CHANGES b/CHANGES
index e46689c..f728765 100644
--- a/CHANGES
+++ b/CHANGES
@@ -753,6 +753,11 @@
   Made the default PNG_USE_LOCAL_ARRAYS depend on PNG_DLL instead of WIN32.
   Make png_free_data() ignore its final parameter when freeing data that can
     have multiple instances (text, sPLT, unknowns).
+version 1.0.7beta14 [May 17, 2000]
+  Fixed a new bug in png_set_rows().
+  Removed info_ptr->valid tests from png_free_data(), as in version 1.0.5.
+  Added png_set_invalid() function.
+  Fixed incorrect illustrations of png_destroy_write_struct() in example.c.
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/INSTALL b/INSTALL
index d214479..5462e5f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.0.7beta13 - May 16, 2000
+Installing libpng version 1.0.7beta14 - May 17, 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.7beta13" or "lpng106" and "zlib-1.1.3"
+might be called "libpng-1.0.7beta14" 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.7beta13)
- makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta13,
+ makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta14)
+ makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta14,
                        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
@@ -60,9 +60,9 @@
  makefile.intel    =>  Intel C/C++ version 4.0 and later
  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.7beta13)
+ makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta14)
  makefile.sunos    =>  Sun makefile
- makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta13)
+ makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta14)
  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 1c59b63..8220eed 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.7beta13, May 16, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta14, May 17, 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 16, 2000
+May 17, 2000
diff --git a/README b/README
index 6fd29a2..4259646 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng 1.0.7beta13 - May 16, 2000 (shared library 2.1)
+README for libpng 1.0.7beta14 - May 17, 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.7beta13)
+                            (gcc, creates libpng.so.2.1.0.7beta14)
        makefile.gcmmx   =>  Linux/ELF makefile (gcc, creates
-                            libpng.so.2.1.0.7beta13, uses assembler code
+                            libpng.so.2.1.0.7beta14, 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
@@ -186,10 +186,10 @@
        makefile.intel   =>  Intel C/C++ version 4.0 and later
        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.7beta13)
+       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta14)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng.so.2.1.0.7beta13)
+                            (gcc, creates libpng.so.2.1.0.7beta14)
        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 fb418e9..88fc7a4 100644
--- a/Y2KINFO
+++ b/Y2KINFO
@@ -1,13 +1,13 @@
    Y2K compliance in libpng:
    =========================
 
-      May 16, 2000
+      May 17, 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.7beta13 are Y2K compliant.  It is my belief that earlier
+      upward through 1.0.7beta14 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 456b590..682bebf 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 echo "
-  There is no \"configure\" script for Libpng-1.0.7beta13.  Instead, please
+  There is no \"configure\" script for Libpng-1.0.7beta14.  Instead, please
   copy the appropriate makefile for your system from the \"scripts\"
   directory.  Read the INSTALL file for more details.
 "
diff --git a/example.c b/example.c
index 2f4f23c..c1b82cd 100644
--- a/example.c
+++ b/example.c
@@ -566,7 +566,7 @@
    {
       /* If we get here, we had a problem reading the file */
       fclose(fp);
-      png_destroy_write_struct(&png_ptr,  (png_infopp)info_ptr);
+      png_destroy_write_struct(&png_ptr, &info_ptr);
       return;
    }
 
@@ -762,7 +762,7 @@
    png_free(png_ptr, trans);
 
    /* clean up after the write, and free any memory allocated */
-   png_destroy_write_struct(&png_ptr, (png_infopp)info_ptr);
+   png_destroy_write_struct(&png_ptr, &info_ptr);
 
    /* close the file */
    fclose(fp);
diff --git a/libpng.3 b/libpng.3
index ab54f3f..74267aa 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "May 16, 2000"
+.TH LIBPNG 3 "May 17, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta13
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta14
 .SH SYNOPSIS
 \fI\fB
 
@@ -488,6 +488,10 @@
 
 \fI\fB
 
+\fBvoid png_set_invalid (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fImask\fP\fB);\fP
+
+\fI\fB
+
 \fBvoid png_set_invert_alpha (png_structp \fIpng_ptr\fP\fB);\fP
 
 \fI\fB
@@ -743,7 +747,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.7beta13 - May 16, 2000
+ libpng version 1.0.7beta14 - May 17, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -1922,7 +1926,7 @@
        &end_info);
 
 It is also possible to individually free the info_ptr members that
-point to libpng-allocated storage with the following functions:
+point to libpng-allocated storage with the following function:
 
     png_free_data(png_ptr, info_ptr, mask, n)
     mask - identifies data to be freed, a mask
@@ -1937,7 +1941,7 @@
     n    - sequence number of item to be freed
            (-1 for all items)
 
-These functions may be safely called when the relevant storage has
+This function may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
 by the user and not by libpng,  and will in those
 cases do nothing.  The "n" parameter is ignored if only one item
@@ -1982,6 +1986,23 @@
 if you transfer responsibility for free'ing text_ptr from libpng to your
 application, your application must not separately free those members.
 
+The png_free_data() function will turn off the "valid" flag for anything
+it frees.  If you need to turn the flag off for a chunk that was freed by your
+application instead of by libpng, you can use
+
+    png_set_invalid(png_ptr, info_ptr, mask);
+    mask - identifies the chunks to be made invalid,
+           containing the logical OR of one or
+           more of 
+             PNG_INFO_gAMA, PNG_INFO_sBIT,
+             PNG_INFO_cHRM, PNG_INFO_PLTE,
+             PNG_INFO_tRNS, PNG_INFO_bKGD,
+             PNG_INFO_hIST, PNG_INFO_pHYs,
+             PNG_INFO_oFFs, PNG_INFO_tIME,
+             PNG_INFO_pCAL, PNG_INFO_sRGB,
+             PNG_INFO_iCCP, PNG_INFO_sPLT,
+             PNG_INFO_sCAL, PNG_INFO_IDAT
+
 For a more compact example of reading a PNG image, see the file example.c.
 
 .SS Reading PNG files progressively
@@ -2880,7 +2901,7 @@
     png_destroy_write_struct(&png_ptr, &info_ptr);
 
 It is also possible to individually free the info_ptr members that
-point to libpng-allocated storage with the following functions:
+point to libpng-allocated storage with the following function:
 
     png_free_data(png_ptr, info_ptr, mask, n)
     mask  - identifies data to be freed, a mask
@@ -2895,7 +2916,7 @@
     n     - sequence number of item to be freed
             (-1 for all items)
 
-These functions may be safely called when the relevant storage has
+This function may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
 by the user  and not by libpng,  and will in those
 cases do nothing.  The "n" parameter is ignored if only one item
@@ -3356,13 +3377,13 @@
 
 .SH VII. Y2K Compliance in libpng
 
-May 16, 2000
+May 17, 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.7beta13 are Y2K compliant.  It is my belief that earlier
+upward through 1.0.7beta14 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
@@ -3503,7 +3524,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.0.7beta13 - May 16, 2000:
+Libpng version 1.0.7beta14 - May 17, 2000:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu).
 
@@ -3518,7 +3539,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.7beta13, May 16, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta14, May 17, 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 3214fe2..4356412 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.7beta13 - May 16, 2000
+ libpng version 1.0.7beta14 - May 17, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -1179,7 +1179,7 @@
        &end_info);
 
 It is also possible to individually free the info_ptr members that
-point to libpng-allocated storage with the following functions:
+point to libpng-allocated storage with the following function:
 
     png_free_data(png_ptr, info_ptr, mask, n)
     mask - identifies data to be freed, a mask
@@ -1194,7 +1194,7 @@
     n    - sequence number of item to be freed
            (-1 for all items)
 
-These functions may be safely called when the relevant storage has
+This function may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
 by the user and not by libpng,  and will in those
 cases do nothing.  The "n" parameter is ignored if only one item
@@ -1239,6 +1239,23 @@
 if you transfer responsibility for free'ing text_ptr from libpng to your
 application, your application must not separately free those members.
 
+The png_free_data() function will turn off the "valid" flag for anything
+it frees.  If you need to turn the flag off for a chunk that was freed by your
+application instead of by libpng, you can use
+
+    png_set_invalid(png_ptr, info_ptr, mask);
+    mask - identifies the chunks to be made invalid,
+           containing the logical OR of one or
+           more of 
+             PNG_INFO_gAMA, PNG_INFO_sBIT,
+             PNG_INFO_cHRM, PNG_INFO_PLTE,
+             PNG_INFO_tRNS, PNG_INFO_bKGD,
+             PNG_INFO_hIST, PNG_INFO_pHYs,
+             PNG_INFO_oFFs, PNG_INFO_tIME,
+             PNG_INFO_pCAL, PNG_INFO_sRGB,
+             PNG_INFO_iCCP, PNG_INFO_sPLT,
+             PNG_INFO_sCAL, PNG_INFO_IDAT
+
 For a more compact example of reading a PNG image, see the file example.c.
 
 Reading PNG files progressively
@@ -2137,7 +2154,7 @@
     png_destroy_write_struct(&png_ptr, &info_ptr);
 
 It is also possible to individually free the info_ptr members that
-point to libpng-allocated storage with the following functions:
+point to libpng-allocated storage with the following function:
 
     png_free_data(png_ptr, info_ptr, mask, n)
     mask  - identifies data to be freed, a mask
@@ -2152,7 +2169,7 @@
     n     - sequence number of item to be freed
             (-1 for all items)
 
-These functions may be safely called when the relevant storage has
+This function may be safely called when the relevant storage has
 already been freed, or has not yet been allocated, or was allocated
 by the user  and not by libpng,  and will in those
 cases do nothing.  The "n" parameter is ignored if only one item
@@ -2613,13 +2630,13 @@
 
 VII. Y2K Compliance in libpng
 
-May 16, 2000
+May 17, 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.7beta13 are Y2K compliant.  It is my belief that earlier
+upward through 1.0.7beta14 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 3691e67..0289b7d 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "May 16, 2000"
+.TH LIBPNGPF 3 "May 17, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta13
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta14
 (private functions)
 .SH SYNOPSIS
 \fB#include <png.h>\fP
diff --git a/png.5 b/png.5
index 94c1c2d..cb3510f 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "May 16, 2000"
+.TH PNG 5 "May 17, 2000"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index 2f8b149..2673242 100644
--- a/png.c
+++ b/png.c
@@ -1,7 +1,7 @@
 
 /* png.c - location for general purpose libpng functions
  *
- * libpng version 1.0.7beta13 - May 16, 2000
+ * libpng version 1.0.7beta14 - May 17, 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_7beta13 Your_png_h_is_not_version_1_0_7beta13;
+typedef version_1_0_7beta14 Your_png_h_is_not_version_1_0_7beta14;
 
 /* 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.7beta13";
+char png_libpng_ver[12] = "1.0.7beta14";
 
 /* png_sig was changed to a function in version 1.0.5c */
 /* Place to hold the signature string for a PNG file. */
@@ -289,14 +289,14 @@
 #if defined(PNG_TEXT_SUPPORTED)
 /* 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)
+if ((mask & PNG_FREE_TEXT) & info_ptr->free_me)
 #else
 if (mask & PNG_FREE_TEXT)
 #endif
 {
    if (num != -1)
    {
-     if (info_ptr->text[num].key)
+     if (info_ptr->text && info_ptr->text[num].key)
      {
          png_free(png_ptr, info_ptr->text[num].key);
          info_ptr->text[num].key = NULL;
@@ -304,15 +304,12 @@
    }
    else
    {
-     if (info_ptr->text != NULL)
-     {
        int i;
        for (i = 0; i < info_ptr->num_text; i++)
            png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i);
        png_free(png_ptr, info_ptr->text);
        info_ptr->text = NULL;
        info_ptr->num_text=0;
-     }
    }
 }
 #endif
@@ -320,94 +317,82 @@
 #if defined(PNG_tRNS_SUPPORTED)
 /* free any tRNS entry */
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & PNG_FREE_TRNS & info_ptr->free_me)
+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)
-   {
-         png_free(png_ptr, info_ptr->trans);
-       info_ptr->valid &= ~PNG_INFO_tRNS;
-   }
+    png_free(png_ptr, info_ptr->trans);
+    info_ptr->valid &= ~PNG_INFO_tRNS;
 }
 #endif
 
 #if defined(PNG_sCAL_SUPPORTED)
 /* free any sCAL entry */
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & PNG_FREE_SCAL & info_ptr->free_me)
+if ((mask & PNG_FREE_SCAL) & info_ptr->free_me)
 #else
 if (mask & PNG_FREE_SCAL)
 #endif
 {
-   if (info_ptr->valid & PNG_INFO_sCAL)
-   {
 #if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
-       png_free(png_ptr, info_ptr->scal_s_width);
-       png_free(png_ptr, info_ptr->scal_s_height);
+    png_free(png_ptr, info_ptr->scal_s_width);
+    png_free(png_ptr, info_ptr->scal_s_height);
 #endif
-       info_ptr->valid &= ~PNG_INFO_sCAL;
-   }
+    info_ptr->valid &= ~PNG_INFO_sCAL;
 }
 #endif
 
 #if defined(PNG_pCAL_SUPPORTED)
 /* free any pCAL entry */
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & PNG_FREE_PCAL & info_ptr->free_me)
+if ((mask & PNG_FREE_PCAL) & info_ptr->free_me)
 #else
 if (mask & PNG_FREE_PCAL)
 #endif
 {
-   if (info_ptr->valid & PNG_INFO_pCAL)
-   {
-       png_free(png_ptr, info_ptr->pcal_purpose);
-       png_free(png_ptr, info_ptr->pcal_units);
-       if (info_ptr->pcal_params != NULL)
-       {
-           int i;
-           for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
-             {
-             png_free(png_ptr, info_ptr->pcal_params[i]);
-             }
-           png_free(png_ptr, info_ptr->pcal_params);
-           info_ptr->valid &= ~PNG_INFO_pCAL;
-       }
-   }
+    png_free(png_ptr, info_ptr->pcal_purpose);
+    png_free(png_ptr, info_ptr->pcal_units);
+    if (info_ptr->pcal_params != NULL)
+    {
+        int i;
+        for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
+          png_free(png_ptr, info_ptr->pcal_params[i]);
+        png_free(png_ptr, info_ptr->pcal_params);
+    }
+    info_ptr->valid &= ~PNG_INFO_pCAL;
 }
 #endif
 
 #if defined(PNG_iCCP_SUPPORTED)
 /* free any iCCP entry */
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & PNG_FREE_ICCP & info_ptr->free_me)
+if ((mask & PNG_FREE_ICCP) & info_ptr->free_me)
 #else
 if (mask & PNG_FREE_ICCP)
 #endif
 {
-   if (info_ptr->valid & PNG_INFO_iCCP)
-   {
-       png_free(png_ptr, info_ptr->iccp_name);
-       png_free(png_ptr, info_ptr->iccp_profile);
-       info_ptr->valid &= ~PNG_INFO_iCCP;
-   }
+    png_free(png_ptr, info_ptr->iccp_name);
+    png_free(png_ptr, info_ptr->iccp_profile);
+    info_ptr->valid &= ~PNG_INFO_iCCP;
 }
 #endif
 
 #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)
+if ((mask & PNG_FREE_SPLT) & info_ptr->free_me)
 #else
 if (mask & PNG_FREE_SPLT)
 #endif
 {
    if (num != -1)
    {
-       png_free(png_ptr, info_ptr->splt_palettes[num].name);
-       png_free(png_ptr, info_ptr->splt_palettes[num].entries);
-       info_ptr->valid &= ~PNG_INFO_sPLT;
+      if(info_ptr->splt_palettes)
+      {
+          png_free(png_ptr, info_ptr->splt_palettes[num].name);
+          png_free(png_ptr, info_ptr->splt_palettes[num].entries);
+      }
    }
    else
    {
@@ -420,21 +405,25 @@
          png_free(png_ptr, info_ptr->splt_palettes);
          info_ptr->splt_palettes_num = 0;
        }
+       info_ptr->valid &= ~PNG_INFO_sPLT;
    }
 }
 #endif
 
 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & info_ptr->free_me & PNG_FREE_UNKN)
+if ((mask & PNG_FREE_UNKN) & info_ptr->free_me)
 #else
 if (mask & PNG_FREE_UNKN)
 #endif
 {
    if (num != -1)
    {
-       png_free(png_ptr, info_ptr->unknown_chunks[num].data);
-       info_ptr->unknown_chunks[num].data = NULL;
+       if(info_ptr->unknown_chunks)
+       {
+          png_free(png_ptr, info_ptr->unknown_chunks[num].data);
+          info_ptr->unknown_chunks[num].data = NULL;
+       }
    }
    else
    {
@@ -455,38 +444,32 @@
 #if defined(PNG_hIST_SUPPORTED)
 /* free any hIST entry */
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & PNG_FREE_HIST  & info_ptr->free_me)
+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)
-   {
-       png_free(png_ptr, info_ptr->hist);
-       info_ptr->valid &= ~PNG_INFO_hIST;
-   }
+    png_free(png_ptr, info_ptr->hist);
+    info_ptr->valid &= ~PNG_INFO_hIST;
 }
 #endif
 
 /* free any PLTE entry that was internally allocated */
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & PNG_FREE_PLTE & info_ptr->free_me)
+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)
-   {
-       png_zfree(png_ptr, info_ptr->palette);
-       info_ptr->valid &= ~(PNG_INFO_PLTE);
-       info_ptr->num_palette = 0;
-   }
+    png_zfree(png_ptr, info_ptr->palette);
+    info_ptr->valid &= ~PNG_INFO_PLTE;
+    info_ptr->num_palette = 0;
 }
 
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
 /* free any image bits attached to the info structure */
 #ifdef PNG_FREE_ME_SUPPORTED
-if (mask & info_ptr->free_me & PNG_FREE_ROWS)
+if ((mask & PNG_FREE_ROWS) & info_ptr->free_me)
 #else
 if (mask & PNG_FREE_ROWS)
 #endif
@@ -499,8 +482,10 @@
        png_free(png_ptr, info_ptr->row_pointers);
        info_ptr->row_pointers=NULL;
     }
+    info_ptr->valid &= ~PNG_INFO_IDAT;
 }
 #endif
+
 #ifdef PNG_FREE_ME_SUPPORTED
    if(num == -1)
      info_ptr->free_me &= ~mask;
@@ -606,7 +591,7 @@
 png_get_copyright(png_structp png_ptr)
 {
    if (png_ptr != NULL || png_ptr == NULL)  /* silence compiler warning */
-   return ("\n libpng version 1.0.7beta13 - May 16, 2000\n\
+   return ("\n libpng version 1.0.7beta14 - May 17, 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");
@@ -624,8 +609,8 @@
 {
    /* Version of *.c files used when building libpng */
    if(png_ptr != NULL) /* silence compiler warning about unused png_ptr */
-      return("1.0.7beta13");
-   return("1.0.7beta13");
+      return("1.0.7beta14");
+   return("1.0.7beta14");
 }
 
 png_charp PNGAPI
diff --git a/png.h b/png.h
index cea8209..9c4d522 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.0.7beta13 - May 16, 2000
+ * libpng version 1.0.7beta14 - May 17, 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.7beta13 - May 16, 2000: Glenn
+ *  libpng versions 0.97, January 1998, through 1.0.7beta14 - May 17, 2000: Glenn
  *  See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -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.7beta13, May 16, 2000)
+ * (libpng versions 0.97, January 1998, through 1.0.7beta14, May 17, 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 16, 2000
+ *    May 17, 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.7beta13 are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.0.7beta14 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
@@ -224,7 +224,7 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.0.7beta13"
+#define PNG_LIBPNG_VER_STRING "1.0.7beta14"
 
 #define PNG_LIBPNG_VER_SONUM   2
 
@@ -234,7 +234,7 @@
 #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   13
+#define PNG_LIBPNG_VER_BUILD   14
 
 /* Careful here.  At one time, Guy wanted to use 082, but that would be octal.
  * We must not include leading zeros.
@@ -1123,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.7beta13
+and png.h are both at * version 1.0.7beta14
  */
-typedef png_structp version_1_0_7beta13;
+typedef png_structp version_1_0_7beta14;
 
 typedef png_struct FAR * FAR * png_structpp;
 
@@ -2077,6 +2077,12 @@
    png_ptr, png_infop info_ptr, png_unknown_chunkpp entries));
 #endif
 
+/* Png_free_data() will turn off the "valid" flag for anything it frees.
+   If you need to turn it off for a chunk that your application has freed,
+   you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); */
+extern PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr,
+   png_infop info_ptr, int mask));
+
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
 /* The "params" pointer is currently not used and is for future expansion. */
 extern PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr,
@@ -2138,7 +2144,7 @@
 extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
 
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.0.7beta13 - May 16, 2000 (header)\n"
+   " libpng version 1.0.7beta14 - May 17, 2000 (header)\n"
 
 #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
 /* With these routines we avoid an integer divide, which will be slower on
diff --git a/pngasmrd.h b/pngasmrd.h
index f895b4d..5bc62f6 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.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 12c18ef..8cc7aa3 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,6 +1,6 @@
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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/pngerror.c b/pngerror.c
index ae76097..c67e2bd 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,7 +1,7 @@
 
 /* pngerror.c - stub functions for i/o and memory allocation
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 75277a2..257b158 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.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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/pngget.c b/pngget.c
index f0de961..ce593c5 100644
--- a/pngget.c
+++ b/pngget.c
@@ -1,7 +1,7 @@
 
 /* pngget.c - retrieval of values from info struct
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 25f1fba..ed4ffd4 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 ca844c5..2b3ca94 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,7 +1,7 @@
 
 /* pngpread.c - read a png file in push mode
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 32370ab..d23a495 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,7 +1,7 @@
 
 /* pngread.c - read a PNG file
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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.7beta13
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta14
  */
 
 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.7beta13
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta14
  */
 void PNGAPI
 png_read_image(png_structp png_ptr, png_bytepp image)
diff --git a/pngrio.c b/pngrio.c
index 36c7534..0535152 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -1,7 +1,7 @@
 
 /* pngrio.c - functions for data input
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 69c7eb0..edc4ed9 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.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 e05c52e..654b74d 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,7 +1,7 @@
 
 /* pngrutil.c - utilities to read a PNG file
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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/pngset.c b/pngset.c
index f990b35..b7ade0f 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1,7 +1,7 @@
 
 /* pngset.c - storage of image information into info struct
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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
@@ -802,15 +802,16 @@
 png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers)
 {
    png_debug1(1, "in %s storage function\n", "rows");
+
    if (png_ptr == NULL || info_ptr == NULL)
       return;
 
    if(info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers))
-   {
       png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
-      info_ptr->row_pointers = row_pointers;
-   }
-   info_ptr->valid |= PNG_INFO_IDAT;
+   info_ptr->row_pointers = row_pointers;
+   if(row_pointers)
+      info_ptr->valid |= PNG_INFO_IDAT;
+
 }
 #endif
 
@@ -824,3 +825,10 @@
     png_ptr->zstream.next_out = png_ptr->zbuf;
     png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 }
+
+void PNGAPI
+png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask)
+{
+   if (png_ptr && info_ptr)
+      info_ptr->valid &= ~(mask);
+}
diff --git a/pngtest.c b/pngtest.c
index cc3641d..60f22e6 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1,7 +1,7 @@
 
 /* pngtest.c - a simple test program to test libpng
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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
@@ -1380,4 +1380,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_7beta13 your_png_h_is_not_version_1_0_7beta13;
+typedef version_1_0_7beta14 your_png_h_is_not_version_1_0_7beta14;
diff --git a/pngtrans.c b/pngtrans.c
index bd3daff..a5932dc 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.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 dfc9130..aad9e3e 100644
--- a/pngvcrd.c
+++ b/pngvcrd.c
@@ -2,7 +2,7 @@
  *
  * For Intel x86 CPU and Microsoft Visual C++ compiler
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 66be8db..6ef500e 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -1,7 +1,7 @@
 
 /* pngwio.c - functions for data output
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 d3d888b..a4f4122 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -1,7 +1,7 @@
 
 /* pngwrite.c - general routines to write a PNG file
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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/pngwtran.c b/pngwtran.c
index 36fa103..38b621b 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.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 1507588..d1f862c 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,7 +1,7 @@
 
 /* pngwutil.c - utilities to write a PNG file
  *
- * libpng 1.0.7beta13 - May 16, 2000
+ * libpng 1.0.7beta14 - May 17, 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 9f534c4..711c13b 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.7beta13
+PNGMIN = 1.0.7beta14
 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 a3c83a3..b512766 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.7beta13
+PNGMIN = 1.0.7beta14
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 CC=cc
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index a1156f8..cc4b017 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.7beta13
+PNGMIN = 1.0.7beta14
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index 1ae7439..f71728c 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.7beta13
+PNGMIN = 1.0.7beta14
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index 5a18599..78f58c1 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.7beta13
+PNGMIN = 1.0.7beta14
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index 799913a..6eaf0a1 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.7beta13
-LIBS=libpng.so.1.0.7beta13
+VER=1.0.7beta14
+LIBS=libpng.so.1.0.7beta14
 SHAREDLIB=libpng.so
 libdir=$(prefix)/lib32
 
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index 33a2e55..34e5226 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.7beta13
+PNGMIN = 1.0.7beta14
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/pngdef.pas b/scripts/pngdef.pas
index 505cba9..da56273 100644
--- a/scripts/pngdef.pas
+++ b/scripts/pngdef.pas
@@ -5,7 +5,7 @@
 interface
 
 const
-  PNG_LIBPNG_VER_STRING = '1.0.7beta13';
+  PNG_LIBPNG_VER_STRING = '1.0.7beta14';
   PNG_LIBPNG_VER        =  10007;
 
 type
@@ -510,6 +510,9 @@
              stdcall;
 function png_set_interlace_handling(png_ptr: png_structp): int;
              stdcall;
+procedure png_set_invalid(png_ptr: png_structp; info_ptr:png_infop;
+             mask: int);
+             stdcall;
 procedure png_set_invert_alpha(png_ptr: png_structp);
              stdcall;
 procedure png_set_invert_mono(png_ptr: png_structp);
diff --git a/scripts/pngos2.def b/scripts/pngos2.def
index e2478da..42fc57f 100644
--- a/scripts/pngos2.def
+++ b/scripts/pngos2.def
@@ -38,6 +38,7 @@
   png_build_grayscale_palette
   png_set_strip_alpha
   png_set_swap_alpha
+  png_set_invalid
   png_set_invert_alpha
   png_set_filler
   png_set_swap