From 4338dab2f80ec5f41bb8540c9904b101219e33e9 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Mon, 5 Jan 2004 14:41:59 +0000 Subject: [PATCH] * src/base/ftobjs.c (destroy_charmaps): New function. (destroy_face, open_face): Use `destroy_charmaps'. --- ChangeLog | 5 +++++ src/base/ftobjs.c | 46 ++++++++++++++++++++++++------------------- src/winfonts/winfnt.c | 2 +- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index e7d38ece7..3710b4515 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-01-03 Masatake YAMATO + + * src/base/ftobjs.c (destroy_charmaps): New function. + (destroy_face, open_face): Use `destroy_charmaps'. + 2004-01-01 Werner Lemberg * docs/CHANGES: Updated. diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 8e023774f..b48288c3c 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -4,7 +4,7 @@ /* */ /* The FreeType private base classes (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003 by */ +/* Copyright 1996-2001, 2002, 2003, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -669,6 +669,28 @@ } + static void + destroy_charmaps( FT_Face face, + FT_Memory memory ) + { + FT_Int n; + + + for ( n = 0; n < face->num_charmaps; n++ ) + { + FT_CMap cmap = FT_CMAP( face->charmaps[n] ); + + + FT_CMap_Done( cmap ); + + face->charmaps[n] = NULL; + } + + FT_FREE( face->charmaps ); + face->num_charmaps = 0; + } + + /* destructor for faces list */ static void destroy_face( FT_Memory memory, @@ -699,25 +721,8 @@ face->generic.finalizer( face ); /* discard charmaps */ - { - FT_Int n; - - - for ( n = 0; n < face->num_charmaps; n++ ) - { - FT_CMap cmap = FT_CMAP( face->charmaps[n] ); - - - FT_CMap_Done( cmap ); - - face->charmaps[n] = NULL; - } - - FT_FREE( face->charmaps ); - face->num_charmaps = 0; - } - - + destroy_charmaps( face, memory ); + /* finalize format-specific stuff */ if ( clazz->done_face ) clazz->done_face( face ); @@ -924,6 +929,7 @@ Fail: if ( error ) { + destroy_charmaps( face, memory ); clazz->done_face( face ); FT_FREE( internal ); FT_FREE( face ); diff --git a/src/winfonts/winfnt.c b/src/winfonts/winfnt.c index e6f7edc2c..abca96a5a 100644 --- a/src/winfonts/winfnt.c +++ b/src/winfonts/winfnt.c @@ -4,7 +4,7 @@ /* */ /* FreeType font driver for Windows FNT/FON files */ /* */ -/* Copyright 1996-2001, 2002, 2003 by */ +/* Copyright 1996-2001, 2002, 2003, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */