* src/sfnt/pngshim.c (Load_SBit_Png): Free `rows` once later.
diff --git a/ChangeLog b/ChangeLog
index 3535d06..0405a73 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2021-03-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/sfnt/pngshim.c (Load_SBit_Png): Free `rows` once later.
+
 2021-03-16  Ben Wagner  <bungeman@google.com>
 
 	[sfnt] Fix memory leak in png loading.
diff --git a/src/sfnt/pngshim.c b/src/sfnt/pngshim.c
index 3ef7b43..19b5db8 100644
--- a/src/sfnt/pngshim.c
+++ b/src/sfnt/pngshim.c
@@ -441,11 +441,10 @@
 
     png_read_image( png, rows );
 
-    FT_FREE( rows );
-
     png_read_end( png, info );
 
   DestroyExit:
+    /* even if reading fails with longjmp, rows must be freed */
     FT_FREE( rows );
     png_destroy_read_struct( &png, &info, NULL );
     FT_Stream_Close( &stream );