| Index: src/ports/SkTypeface_win_dw.cpp
|
| diff --git a/src/ports/SkTypeface_win_dw.cpp b/src/ports/SkTypeface_win_dw.cpp
|
| index 566f3d166bc608a7ff611ea8c8e63853e597654d..7b6b522cea09f0c8c6bd7288423ff02fb278e942 100644
|
| --- a/src/ports/SkTypeface_win_dw.cpp
|
| +++ b/src/ports/SkTypeface_win_dw.cpp
|
| @@ -27,17 +27,17 @@
|
| void DWriteFontTypeface::onGetFontDescriptor(SkFontDescriptor* desc,
|
| bool* isLocalStream) const {
|
| // Get the family name.
|
| - SkTScopedComPtr<IDWriteLocalizedStrings> dwFamilyNames;
|
| - HRV(fDWriteFontFamily->GetFamilyNames(&dwFamilyNames));
|
| + SkTScopedComPtr<IDWriteLocalizedStrings> familyNames;
|
| + HRV(fDWriteFontFamily->GetFamilyNames(&familyNames));
|
|
|
| - UINT32 dwFamilyNamesLength;
|
| - HRV(dwFamilyNames->GetStringLength(0, &dwFamilyNamesLength));
|
| + UINT32 familyNamesLen;
|
| + HRV(familyNames->GetStringLength(0, &familyNamesLen));
|
|
|
| - SkSMallocWCHAR dwFamilyNameChar(dwFamilyNamesLength+1);
|
| - HRV(dwFamilyNames->GetString(0, dwFamilyNameChar.get(), dwFamilyNamesLength+1));
|
| + SkSMallocWCHAR familyName(familyNamesLen+1);
|
| + HRV(familyNames->GetString(0, familyName.get(), familyNamesLen+1));
|
|
|
| SkString utf8FamilyName;
|
| - HRV(sk_wchar_to_skstring(dwFamilyNameChar.get(), &utf8FamilyName));
|
| + HRV(sk_wchar_to_skstring(familyName.get(), familyNamesLen, &utf8FamilyName));
|
|
|
| desc->setFamilyName(utf8FamilyName.c_str());
|
| *isLocalStream = SkToBool(fDWriteFontFileLoader.get());
|
| @@ -140,24 +140,22 @@ public:
|
| }
|
|
|
| // String
|
| - UINT32 stringLength;
|
| - HRBM(fStrings->GetStringLength(fIndex, &stringLength), "Could not get string length.");
|
| - stringLength += 1;
|
| + UINT32 stringLen;
|
| + HRBM(fStrings->GetStringLength(fIndex, &stringLen), "Could not get string length.");
|
|
|
| - SkSMallocWCHAR wString(stringLength);
|
| - HRBM(fStrings->GetString(fIndex, wString.get(), stringLength), "Could not get string.");
|
| + SkSMallocWCHAR wString(stringLen+1);
|
| + HRBM(fStrings->GetString(fIndex, wString.get(), stringLen+1), "Could not get string.");
|
|
|
| - HRB(sk_wchar_to_skstring(wString.get(), &localizedString->fString));
|
| + HRB(sk_wchar_to_skstring(wString.get(), stringLen, &localizedString->fString));
|
|
|
| // Locale
|
| - UINT32 localeLength;
|
| - HRBM(fStrings->GetLocaleNameLength(fIndex, &localeLength), "Could not get locale length.");
|
| - localeLength += 1;
|
| + UINT32 localeLen;
|
| + HRBM(fStrings->GetLocaleNameLength(fIndex, &localeLen), "Could not get locale length.");
|
|
|
| - SkSMallocWCHAR wLocale(localeLength);
|
| - HRBM(fStrings->GetLocaleName(fIndex, wLocale.get(), localeLength), "Could not get locale.");
|
| + SkSMallocWCHAR wLocale(localeLen+1);
|
| + HRBM(fStrings->GetLocaleName(fIndex, wLocale.get(), localeLen+1), "Could not get locale.");
|
|
|
| - HRB(sk_wchar_to_skstring(wLocale.get(), &localizedString->fLanguage));
|
| + HRB(sk_wchar_to_skstring(wLocale.get(), localeLen, &localizedString->fLanguage));
|
|
|
| ++fIndex;
|
| return true;
|
| @@ -349,14 +347,13 @@ SkAdvancedTypefaceMetrics* DWriteFontTypeface::onGetAdvancedTypefaceMetrics(
|
| SkTScopedComPtr<IDWriteLocalizedStrings> familyNames;
|
| hr = fDWriteFontFamily->GetFamilyNames(&familyNames);
|
|
|
| - UINT32 familyNameLength;
|
| - hr = familyNames->GetStringLength(0, &familyNameLength);
|
| + UINT32 familyNameLen;
|
| + hr = familyNames->GetStringLength(0, &familyNameLen);
|
|
|
| - UINT32 size = familyNameLength+1;
|
| - SkSMallocWCHAR wFamilyName(size);
|
| - hr = familyNames->GetString(0, wFamilyName.get(), size);
|
| + SkSMallocWCHAR familyName(familyNameLen+1);
|
| + hr = familyNames->GetString(0, familyName.get(), familyNameLen+1);
|
|
|
| - hr = sk_wchar_to_skstring(wFamilyName.get(), &info->fFontName);
|
| + hr = sk_wchar_to_skstring(familyName.get(), familyNameLen, &info->fFontName);
|
|
|
| if (perGlyphInfo & SkAdvancedTypefaceMetrics::kToUnicode_PerGlyphInfo) {
|
| populate_glyph_to_unicode(fDWriteFontFace.get(), glyphCount, &(info->fGlyphToUnicode));
|
|
|