Huw Davies : gdi32: Add a helper to create a family.

Alexandre Julliard julliard at winehq.org
Tue Mar 27 12:48:06 CDT 2012


Module: wine
Branch: master
Commit: e27a633b93dd43ad17268fd6bca52ae1dc51e080
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e27a633b93dd43ad17268fd6bca52ae1dc51e080

Author: Huw Davies <huw at codeweavers.com>
Date:   Tue Mar 27 11:48:40 2012 +0100

gdi32: Add a helper to create a family.

---

 dlls/gdi32/freetype.c |   28 +++++++++++++++++++++-------
 1 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 1b38a8e..3afc2ea 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -1520,6 +1520,21 @@ static void get_family_names( FT_Face ft_face, WCHAR **name, WCHAR **english, BO
     }
 }
 
+/****************************************************************
+ * NB This function stores the ptrs to the strings to save copying.
+ * Don't free them after calling.
+ */
+static Family *create_family( WCHAR *name, WCHAR *english_name )
+{
+    Family *family = HeapAlloc( GetProcessHeap(), 0, sizeof(*family) );
+    family->FamilyName = name;
+    family->EnglishName = english_name;
+    list_init( &family->faces );
+    family->replacement = &family->faces;
+
+    return family;
+}
+
 static Family *get_family( FT_Face ft_face, BOOL vertical )
 {
     Family *family;
@@ -1531,11 +1546,7 @@ static Family *get_family( FT_Face ft_face, BOOL vertical )
 
     if (!family)
     {
-        family = HeapAlloc( GetProcessHeap(), 0, sizeof(*family) );
-        family->FamilyName = strdupW( name );
-        family->EnglishName = english_name ? strdupW( english_name ) : NULL;
-        list_init( &family->faces );
-        family->replacement = &family->faces;
+        family = create_family( name, english_name );
         list_add_tail( &font_list, &family->entry );
 
         if (english_name)
@@ -1548,8 +1559,11 @@ static Family *get_family( FT_Face ft_face, BOOL vertical )
             add_font_subst( &font_subst_list, subst, 0 );
         }
     }
-    HeapFree( GetProcessHeap(), 0, name );
-    HeapFree( GetProcessHeap(), 0, english_name );
+    else
+    {
+        HeapFree( GetProcessHeap(), 0, name );
+        HeapFree( GetProcessHeap(), 0, english_name );
+    }
 
     return family;
 }




More information about the wine-cvs mailing list