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
