[libpng16] Only mark text chunks as written after successfully writing them.
diff --git a/ANNOUNCE b/ANNOUNCE
index 5350aa2..e66f1bd 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -61,8 +61,12 @@
   Replaced repeated code in pngpread.c with PNG_PUSH_SAVE_BUFFER_IF_FULL.
   Added "chunk iTXt enables TEXT" and "chunk zTXt enables TEXT"
     to pnglibconf.dfa.
+  Removed "option READ_COMPRESSED_TEXT enables READ_TEXT" from pnglibconf.dfa,
+    to make it possible to configure a libpng that supports iCCP but not TEXT.
 
 Version 1.6.14beta07 [October 5, 2014]
+  Removed "option WRITE_COMPRESSED_TEXT enables WRITE_TEXT" from pnglibconf.dfa
+  Only mark text chunks as written after successfully writing them.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
diff --git a/CHANGES b/CHANGES
index d8cda8b..329da13 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5014,8 +5014,12 @@
   Replaced repeated code in pngpread.c with PNG_PUSH_SAVE_BUFFER_IF_FULL.
   Added "chunk iTXt enables TEXT" and "chunk zTXt enables TEXT"
     to pnglibconf.dfa.
+  Removed "option READ_COMPRESSED_TEXT enables READ_TEXT" from pnglibconf.dfa,
+    to make it possible to configure a libpng that supports iCCP but not TEXT.
 
 Version 1.6.14beta07 [October 5, 2014]
+  Removed "option WRITE_COMPRESSED_TEXT enables WRITE_TEXT" from pnglibconf.dfa
+  Only mark text chunks as written after successfully writing them.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
diff --git a/example.c b/example.c
index ad5fc70..9075e57 100644
--- a/example.c
+++ b/example.c
@@ -932,7 +932,7 @@
     */
 
    /* Once we write out the header, the compression type on the text
-    * chunks gets changed to PNG_TEXT_COMPRESSION_NONE_WR or
+    * chunk gets changed to PNG_TEXT_COMPRESSION_NONE_WR or
     * PNG_TEXT_COMPRESSION_zTXt_WR, so it doesn't get written out again
     * at the end.
     */
diff --git a/pngread.c b/pngread.c
index 845ff7b..53b9c3b 100644
--- a/pngread.c
+++ b/pngread.c
@@ -396,6 +396,7 @@
    row_info.pixel_depth = png_ptr->pixel_depth;
    row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width);
 
+#ifdef PNG_WARNINGS_SUPPORTED
    if (png_ptr->row_number == 0 && png_ptr->pass == 0)
    {
    /* Check for transforms that have been set but were defined out */
@@ -435,6 +436,7 @@
       png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined");
 #endif
    }
+#endif /* PNG_WARNINGS_SUPPORTED */
 
 #ifdef PNG_READ_INTERLACING_SUPPORTED
    /* If interlaced and we do not need a new row, combine row and return.
diff --git a/pngwrite.c b/pngwrite.c
index ee78afc..b0948b3 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -292,11 +292,14 @@
              info_ptr->text[i].lang,
              info_ptr->text[i].lang_key,
              info_ptr->text[i].text);
+         /* Mark this chunk as written */
+         if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)
+            info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
+         else
+            info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
 #else
-          png_warning(png_ptr, "Unable to write international text");
+         png_warning(png_ptr, "Unable to write international text");
 #endif
-          /* Mark this chunk as written */
-          info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR;
       }
 
       /* If we want a compressed text chunk */
@@ -306,11 +309,11 @@
          /* Write compressed chunk */
          png_write_zTXt(png_ptr, info_ptr->text[i].key,
              info_ptr->text[i].text, info_ptr->text[i].compression);
+         /* Mark this chunk as written */
+         info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
 #else
          png_warning(png_ptr, "Unable to write compressed text");
 #endif
-         /* Mark this chunk as written */
-         info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR;
       }
 
       else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE)