Merge cherrypicks of [13091166, 13091167, 13091317, 13090992, 13091168, 13091169, 13090993, 13090994, 13090949, 13090950, 13090951, 13090952, 13091170, 13091171, 13090953, 13091129, 13091130, 13091178, 13091179, 13091180, 13091181, 13091182, 13091183, 13091184, 13091185, 13091186, 13091187, 13090954, 13090995, 13091336, 13091172, 13091131, 13091132, 13091318, 13091319, 13091320, 13091188, 13091189, 13091173, 13091190, 13091174, 13091175, 13091191, 13091192, 13091193, 13091356, 13091357, 13091358, 13090782] into rvc-qpr1-c-release

Change-Id: Ie2cc3e48eb7550ec0a7f852fcffdddd7096a6195
diff --git a/src/sfnt/pngshim.c b/src/sfnt/pngshim.c
index ca85d97..15f4e16 100644
--- a/src/sfnt/pngshim.c
+++ b/src/sfnt/pngshim.c
@@ -327,6 +327,13 @@
 
     if ( populate_map_and_metrics )
     {
+      /* reject too large bitmaps similarly to the rasterizer */
+      if ( imgHeight > 0x7FFF || imgWidth > 0x7FFF )
+      {
+        error = FT_THROW( Array_Too_Large );
+        goto DestroyExit;
+      }
+
       metrics->width  = (FT_UShort)imgWidth;
       metrics->height = (FT_UShort)imgHeight;
 
@@ -335,13 +342,6 @@
       map->pixel_mode = FT_PIXEL_MODE_BGRA;
       map->pitch      = (int)( map->width * 4 );
       map->num_grays  = 256;
-
-      /* reject too large bitmaps similarly to the rasterizer */
-      if ( map->rows > 0x7FFF || map->width > 0x7FFF )
-      {
-        error = FT_THROW( Array_Too_Large );
-        goto DestroyExit;
-      }
     }
 
     /* convert palette/gray image to rgb */