Module: wine Branch: master Commit: 8d50bb6711e3e3e3cc0bfd56ad15aafa2ef712a3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8d50bb6711e3e3e3cc0bfd56ad...
Author: Huw Davies huw@codeweavers.com Date: Tue Mar 27 11:48:45 2012 +0100
gdi32: Add a helper to free a face object and fix a potential memory leak.
---
dlls/gdi32/freetype.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c index be03c34..efa36bb 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; } }