In functions parse_font_name and parse_subrs, added a test for when loading synthetic fonts to make sure that the font name and subrotuines are not loaded twice. This is to remove a memory leak that occurs because the original allocation for these objects is not deallocated when the objects are read the second time.
diff --git a/src/type1/t1load.c b/src/type1/t1load.c
index ce6607f..7196679 100644
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -827,6 +827,9 @@
FT_Byte* cur2;
FT_Byte* limit;
+ if ( face->type1.font_name )
+ /* with synthetic fonts, it's possible we get here twice */
+ return;
T1_Skip_Spaces( parser );
@@ -1095,6 +1098,9 @@
PSAux_Interface* psaux = (PSAux_Interface*)face->psaux;
+ if ( loader->num_subrs )
+ /* with synthetic fonts, it's possible we get here twice */
+ return;
loader->num_subrs = T1_ToInt( parser );
if ( parser->root.error )