From 8d50bb6711e3e3e3cc0bfd56ad15aafa2ef712a3 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Tue, 27 Mar 2012 11:48:45 +0100 Subject: [PATCH] gdi32: Add a helper to free a face object and fix a potential memory leak. --- dlls/gdi32/freetype.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c index be03c340f61..efa36bbc7a1 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c @@ -1668,6 +1668,15 @@ static inline void get_fontsig( FT_Face ft_face, FONTSIGNATURE *fs ) } } +static inline void free_face( Face *face ) +{ + HeapFree( GetProcessHeap(), 0, face->file ); + HeapFree( GetProcessHeap(), 0, face->StyleName ); + HeapFree( GetProcessHeap(), 0, face->FullName ); + HeapFree( GetProcessHeap(), 0, face->cached_enum_data ); + HeapFree( GetProcessHeap(), 0, face ); +} + #define ADDFONT_EXTERNAL_FONT 0x01 #define ADDFONT_FORCE_BITMAP 0x02 #define ADDFONT_ADD_TO_CACHE 0x04 @@ -1709,10 +1718,7 @@ static void AddFaceToList(FT_Face ft_face, const char *file, void *font_data_ptr } else { TRACE("Replacing original with this one\n"); list_remove(&face->entry); - HeapFree(GetProcessHeap(), 0, face->file); - HeapFree(GetProcessHeap(), 0, face->StyleName); - HeapFree(GetProcessHeap(), 0, face->FullName); - HeapFree(GetProcessHeap(), 0, face); + free_face( face ); break; } } -- 2.11.4.GIT