[6/6] gdi32: Add a helper function to convert a string from A to W. (try 2)
Kusanagi Kouichi
slash at ac.auone-net.jp
Thu Dec 8 06:59:21 CST 2011
Signed-off-by: Kusanagi Kouichi <slash at ac.auone-net.jp>
---
dlls/gdi32/freetype.c | 35 ++++++++++++++++-------------------
1 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 5853468..b153cbd 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -1021,19 +1021,27 @@ static BOOL add_font_subst(struct list *subst_list, FontSubst *subst, INT flags)
return FALSE;
}
+static WCHAR *towstr(UINT cp, const char *str)
+{
+ int len;
+ WCHAR *wstr;
+
+ len = MultiByteToWideChar(cp, 0, str, -1, NULL, 0);
+ wstr = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+ MultiByteToWideChar(cp, 0, str, -1, wstr, len);
+ return wstr;
+}
+
static void split_subst_info(NameCs *nc, LPSTR str)
{
CHAR *p = strrchr(str, ',');
- DWORD len;
nc->charset = -1;
if(p && *(p+1)) {
nc->charset = strtol(p+1, NULL, 10);
*p = '\0';
}
- len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
- nc->name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, str, -1, nc->name, len);
+ nc->name = towstr(CP_ACP, str);
}
static void LoadSubstList(void)
@@ -1471,7 +1479,6 @@ static void AddFaceToList(FT_Face ft_face, const char *fake_family, const char *
TT_OS2 *pOS2;
TT_Header *pHeader = NULL;
WCHAR *english_family, *localised_family;
- DWORD len;
Face *face;
struct list *face_elem_ptr;
FT_WinFNT_HeaderRec winfnt_header;
@@ -1485,10 +1492,7 @@ static void AddFaceToList(FT_Face ft_face, const char *fake_family, const char *
if (fake_family)
{
- len = MultiByteToWideChar(CP_ACP, 0, fake_family, -1, NULL, 0);
- english_family = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, fake_family, -1, english_family, len);
-
+ english_family = towstr(CP_ACP, fake_family);
localised_family = NULL;
}
else
@@ -1496,9 +1500,7 @@ static void AddFaceToList(FT_Face ft_face, const char *fake_family, const char *
english_family = get_face_name(ft_face, TT_NAME_ID_FONT_FAMILY, TT_MS_LANGID_ENGLISH_UNITED_STATES);
if (!english_family)
{
- len = MultiByteToWideChar(CP_ACP, 0, ft_face->family_name, -1, NULL, 0);
- english_family = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, ft_face->family_name, -1, english_family, len);
+ english_family = towstr(CP_ACP, ft_face->family_name);
}
localised_family = get_face_name(ft_face, TT_NAME_ID_FONT_FAMILY, GetUserDefaultLCID());
@@ -1535,9 +1537,7 @@ static void AddFaceToList(FT_Face ft_face, const char *fake_family, const char *
HeapFree(GetProcessHeap(), 0, localised_family);
HeapFree(GetProcessHeap(), 0, english_family);
- len = MultiByteToWideChar(CP_ACP, 0, ft_face->style_name, -1, NULL, 0);
- StyleW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, ft_face->style_name, -1, StyleW, len);
+ StyleW = towstr(CP_ACP, ft_face->style_name);
internal_leading = 0;
memset(&fs, 0, sizeof(fs));
@@ -2815,7 +2815,6 @@ static void populate_system_links(HKEY hkey, const WCHAR *name, const WCHAR *con
Face *face;
const char *file;
WCHAR *fileW;
- int fileLen;
WCHAR buff[MAX_PATH];
WCHAR *data;
int entryLen;
@@ -2853,9 +2852,7 @@ static void populate_system_links(HKEY hkey, const WCHAR *name, const WCHAR *con
}
if (!file)
continue;
- fileLen = MultiByteToWideChar(CP_UNIXCP, 0, file, -1, NULL, 0);
- fileW = HeapAlloc(GetProcessHeap(), 0, fileLen * sizeof(WCHAR));
- MultiByteToWideChar(CP_UNIXCP, 0, file, -1, fileW, fileLen);
+ fileW = towstr(CP_UNIXCP, file);
entryLen = strlenW(fileW) + 1 + strlenW(value) + 1;
if (sizeof(buff)-(data-buff) < entryLen + 1)
{
--
1.7.7.3
More information about the wine-patches
mailing list