[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ft] FT_Get_Postscript_Name leaks for TT fonts
From: |
Masatake YAMATO |
Subject: |
Re: [ft] FT_Get_Postscript_Name leaks for TT fonts |
Date: |
Sat, 27 Aug 2005 19:13:17 +0900 (JST) |
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;
}