[libpng16] Quiet a "comparison always true" warning in pngstest.c (John Bowler).
diff --git a/ANNOUNCE b/ANNOUNCE
index 2e8f892..16982e8 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,4 +1,4 @@
-Libpng 1.6.16beta03 - December 15, 2014
+Libpng 1.6.16beta03 - December 17, 2014
 
 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.
@@ -35,7 +35,8 @@
   Revised Makefile.am and scripts/*.dfn again to work with MinGW/MSYS;
     renamed scripts/*.dfn to scripts/*.c (John Bowler).
 
-Version 1.6.16beta03 [December 15, 2014]
+Version 1.6.16beta03 [December 17, 2014]
+  Quiet a "comparison always true" warning in pngstest.c (John Bowler).
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
diff --git a/CHANGES b/CHANGES
index f0dff07..9d568fb 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5109,7 +5109,8 @@
   Revised Makefile.am and scripts/*.dfn again to work with MinGW/MSYS;
     renamed scripts/*.dfn to scripts/*.c (John Bowler).
 
-Version 1.6.16beta03 [December 15, 2014]
+Version 1.6.16beta03 [December 17, 2014]
+  Quiet a "comparison always true" warning in pngstest.c (John Bowler).
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
diff --git a/contrib/libtests/pngstest.c b/contrib/libtests/pngstest.c
index d20e8f2..6d6c501 100644
--- a/contrib/libtests/pngstest.c
+++ b/contrib/libtests/pngstest.c
@@ -3173,32 +3173,43 @@
             {
                long int cb = ftell(f);
 
-               if (cb > 0 && (unsigned long int)cb < (size_t)~(size_t)0)
+               if (cb > 0)
                {
-                  png_bytep b = voidcast(png_bytep, malloc((size_t)cb));
-
-                  if (b != NULL)
+                  if ((unsigned long int)cb <= (size_t)~(size_t)0)
                   {
-                     rewind(f);
+                     png_bytep b = voidcast(png_bytep, malloc((size_t)cb));
 
-                     if (fread(b, (size_t)cb, 1, f) == 1)
+                     if (b != NULL)
                      {
-                        fclose(f);
-                        image->input_memory_size = cb;
-                        image->input_memory = b;
+                        rewind(f);
+
+                        if (fread(b, (size_t)cb, 1, f) == 1)
+                        {
+                           fclose(f);
+                           image->input_memory_size = cb;
+                           image->input_memory = b;
+                        }
+
+                        else
+                        {
+                           free(b);
+                           return logclose(image, f, image->file_name,
+                              ": read failed: ");
+                        }
                      }
 
                      else
-                     {
-                        free(b);
                         return logclose(image, f, image->file_name,
-                           ": read failed: ");
-                     }
+                           ": out of memory: ");
                   }
 
                   else
                      return logclose(image, f, image->file_name,
-                        ": out of memory: ");
+                        ": file too big for this architecture: ");
+                     /* cb is the length of the file as a (long) and
+                      * this is greater than the maximum amount of
+                      * memory that can be requested from malloc.
+                      */
                }
 
                else if (cb == 0)