[libpng16] Avoid writing an empty IDAT when the last IDAT exactly fills the

compression buffer (bug report by Brian Baird).  This bug was introduced in
libpng-1.6.0.
diff --git a/ANNOUNCE b/ANNOUNCE
index 63585f7..701cb70 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,4 +1,4 @@
-Libpng 1.6.30beta04 - May 24, 2017
+Libpng 1.6.30beta04 - June 6, 2017
 
 This is not intended to be a public release.  It will be replaced
 within a few weeks by a public version or by another test version.
@@ -45,7 +45,10 @@
   Test CMAKE_HOST_WIN32 instead of WIN32 in CMakeLists.txt.
   Fix some URL in documentation.
 
-Version 1.6.30beta04 [May 24, 2017]
+Version 1.6.30beta04 [June 6, 2017]
+  Avoid writing an empty IDAT when the last IDAT exactly fills the
+    compression buffer (bug report by Brian Baird).  This bug was
+    introduced in libpng-1.6.0.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
diff --git a/CHANGES b/CHANGES
index 6fc73ee..649f00e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5840,7 +5840,10 @@
   Test CMAKE_HOST_WIN32 instead of WIN32 in CMakeLists.txt.
   Fix some URL in documentation.
 
-Version 1.6.30beta04 [May 24, 2017]
+Version 1.6.30beta04 [June 6, 2017]
+  Avoid writing an empty IDAT when the last IDAT exactly fills the
+    compression buffer (bug report by Brian Baird).  This bug was
+    introduced in libpng-1.6.0.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
diff --git a/pngwutil.c b/pngwutil.c
index 0f98d58..21cfcf4 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1003,7 +1003,8 @@
                optimize_cmf(data, png_image_size(png_ptr));
 #endif
 
-         png_write_complete_chunk(png_ptr, png_IDAT, data, size);
+         if (size)
+            png_write_complete_chunk(png_ptr, png_IDAT, data, size);
          png_ptr->mode |= PNG_HAVE_IDAT;
 
          png_ptr->zstream.next_out = data;
@@ -1049,7 +1050,8 @@
             optimize_cmf(data, png_image_size(png_ptr));
 #endif
 
-         png_write_complete_chunk(png_ptr, png_IDAT, data, size);
+         if (size)
+            png_write_complete_chunk(png_ptr, png_IDAT, data, size);
          png_ptr->zstream.avail_out = 0;
          png_ptr->zstream.next_out = NULL;
          png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT;