[libpng17] Quieted some Coverity warnings
diff --git a/png.c b/png.c
index bcb4a0d..2913e37 100644
--- a/png.c
+++ b/png.c
@@ -3348,23 +3348,26 @@
 {
    /* The required result is 1/a * 1/b; the following preserves accuracy. */
 #ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
-   double r = 1E15/a;
-   r /= b;
-   r = floor(r+.5);
+   if (a != 0 && b != 0)
+   {
+      double r = 1E15/a;
+      r /= b;
+      r = floor(r+.5);
 
-   if (r <= 2147483647. && r >= -2147483648.)
-      return (png_fixed_point)r;
+      if (r <= 2147483647. && r >= -2147483648.)
+         return (png_fixed_point)r;
 #else
-   /* This may overflow because the range of png_fixed_point isn't symmetric,
-    * but this API is only used for the product of file and screen gamma so it
-    * doesn't matter that the smallest number it can produce is 1/21474, not
-    * 1/100000
-    */
-   png_fixed_point res = png_product2(a, b);
+      /* This may overflow because the range of png_fixed_point isn't
+       * symmetric, but this API is only used for the product of file and
+       * screen gamma so it doesn't matter that the smallest number it can
+       * produce is 1/21474, not 1/100000
+       */
+      png_fixed_point res = png_product2(a, b);
 
-   if (res != 0)
-      return png_reciprocal(res);
+      if (res != 0)
+         return png_reciprocal(res);
 #endif
+   }
 
    return 0; /* overflow */
 }
diff --git a/pngrtran.c b/pngrtran.c
index 0ea587b..fb78ca4 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -841,7 +841,7 @@
    png_set_gamma_fixed(png_ptr, convert_gamma_value(png_ptr, scrn_gamma),
       convert_gamma_value(png_ptr, file_gamma));
 }
-#  endif /* FLOATING_POINT_SUPPORTED */
+#  endif /* FLOATING_POINT */
 #endif /* READ_GAMMA */
 
 #ifdef PNG_READ_EXPAND_SUPPORTED
@@ -1663,20 +1663,24 @@
                      unsigned int shift = png_ptr->gamma_shift;
                      unsigned int add = (shift > 0 ? 1U<<(shift-1) : 0);
 
-                     v = png_ptr->gamma_to_1[palette[i].red];
-                     png_composite_16(w, v, alpha, back_1.red);
-                     palette[i].red = png_ptr->gamma_from_1[(w+add)>>shift];
+                     if (png_ptr->gamma_to_1 != NULL)
+                     {
+                        v = png_ptr->gamma_to_1[palette[i].red];
+                        png_composite_16(w, v, alpha, back_1.red);
+                        palette[i].red = png_ptr->gamma_from_1[(w+add)>>shift];
 
-                     v = png_ptr->gamma_to_1[palette[i].green];
-                     png_composite_16(w, v, alpha, back_1.green);
-                     palette[i].green = png_ptr->gamma_from_1[(w+add)>>shift];
+                        v = png_ptr->gamma_to_1[palette[i].green];
+                        png_composite_16(w, v, alpha, back_1.green);
+                        palette[i].green =
+                           png_ptr->gamma_from_1[(w+add)>>shift];
 
-                     v = png_ptr->gamma_to_1[palette[i].blue];
-                     png_composite_16(w, v, alpha, back_1.blue);
-                     palette[i].blue = png_ptr->gamma_from_1[(w+add)>>shift];
+                        v = png_ptr->gamma_to_1[palette[i].blue];
+                        png_composite_16(w, v, alpha, back_1.blue);
+                        palette[i].blue = png_ptr->gamma_from_1[(w+add)>>shift];
+                     }
                   }
                }
-               else
+               else if (png_ptr->gamma_table != NULL)
                {
                   palette[i].red = png_ptr->gamma_table[palette[i].red];
                   palette[i].green = png_ptr->gamma_table[palette[i].green];
@@ -1712,11 +1716,14 @@
          /* NOTE: there are other transformations that should probably be in
           * here too.
           */
-         for (i = 0; i < num_palette; i++)
+         if (png_ptr->gamma_table != NULL)
          {
-            palette[i].red = png_ptr->gamma_table[palette[i].red];
-            palette[i].green = png_ptr->gamma_table[palette[i].green];
-            palette[i].blue = png_ptr->gamma_table[palette[i].blue];
+            for (i = 0; i < num_palette; i++)
+            {
+               palette[i].red = png_ptr->gamma_table[palette[i].red];
+               palette[i].green = png_ptr->gamma_table[palette[i].green];
+               palette[i].blue = png_ptr->gamma_table[palette[i].blue];
+            }
          }
 
          /* Done the gamma correction. */
@@ -2985,9 +2992,17 @@
             {
                png_uint_16 red, green, blue, w;
 
+#if 0 /* Coverity doesn't like this */
                red   = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
                green = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
                blue  = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2;
+#else
+               png_byte hi,lo;
+
+               hi=*(sp)++; lo=*(sp)++; red   = (png_uint_16)((hi << 8) | (lo));
+               hi=*(sp)++; lo=*(sp)++; green = (png_uint_16)((hi << 8) | (lo));
+               hi=*(sp)++; lo=*(sp)++; blue  = (png_uint_16)((hi << 8) | (lo));
+#endif
 
                if (red == green && red == blue)
                {
diff --git a/pngrutil.c b/pngrutil.c
index 97c29f5..5a5e50f 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1834,7 +1834,8 @@
    png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans,
        &(png_ptr->trans_color));
 
-   png_ptr->trans_alpha = info_ptr->trans_alpha;
+   if (info_ptr != NULL)
+      png_ptr->trans_alpha = info_ptr->trans_alpha;
 }
 #endif