Hi,
> Hello,
>
> Freetype2 function FT_Get_Postscript_Name leaks for TT fonts.
> Because
> tt_face_done in src\truetype\ttobjs.c
> does not delete postscript_name.
>
> Is this the place to submit bugs?
Yes. Could you tell me more?
Please, don't forget writing the version of FreeType2.
In my short investigation into the CVS version of FreeType2,
I cannot find the leak.
Here is the call chain from tt_face_done to tt_face_free_ps_names.
FT_LOCAL_DEF( void )
tt_face_done( FT_Face ttface ) /* TT_Face */
{
TT_Face face = (TT_Face)ttface;
FT_Memory memory = face->root.memory;
FT_Stream stream = face->root.stream;
SFNT_Service sfnt = (SFNT_Service)face->sfnt;
/* for `extended TrueType formats' (i.e. compressed versions) */
if ( face->extra.finalizer )
face->extra.finalizer( face->extra.data );
if ( sfnt )
sfnt->done_face( face );
FT_LOCAL_DEF( void )
sfnt_done_face( TT_Face face )
{
FT_Memory memory = face->root.memory;
SFNT_Service sfnt = (SFNT_Service)face->sfnt;
if ( sfnt )
{
/* destroy the postscript names table if it is loaded */
if ( sfnt->free_psnames )
sfnt->free_psnames( face );
FT_LOCAL_DEF( void )
tt_face_free_ps_names( TT_Face face )
{
FT_Memory memory = face->root.memory;
TT_Post_Names names = &face->postscript_names;
FT_Fixed format;
if ( names->loaded )
{
format = face->postscript.FormatType;
if ( format == 0x00020000L )
{
TT_Post_20 table = &names->names.format_20;
FT_UShort n;
FT_FREE( table->glyph_indices );
table->num_glyphs = 0;
for ( n = 0; n < table->num_names; n++ )
FT_FREE( table->glyph_names[n] );
FT_FREE( table->glyph_names );
table->num_names = 0;
}
else if ( format == 0x00028000L )
{
TT_Post_25 table = &names->names.format_25;
FT_FREE( table->offsets );
table->num_glyphs = 0;
}
}
names->loaded = 0;
}
_______________________________________________
Freetype mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/freetype