Index: src/ports/SkTypeface_win_dw.cpp |
diff --git a/src/ports/SkTypeface_win_dw.cpp b/src/ports/SkTypeface_win_dw.cpp |
index 25de1b6578e34e96c14968896837c3f299db66f9..95ab6122f9f8d25337134fe2b55351cb78776d75 100644 |
--- a/src/ports/SkTypeface_win_dw.cpp |
+++ b/src/ports/SkTypeface_win_dw.cpp |
@@ -286,15 +286,17 @@ using namespace skia_advanced_typeface_metrics_utils; |
static void populate_glyph_to_unicode(IDWriteFontFace* fontFace, |
const unsigned glyphCount, |
SkTDArray<SkUnichar>* glyphToUnicode) { |
- HRESULT hr = S_OK; |
- |
//Do this like free type instead |
SkAutoTMalloc<SkUnichar> glyphToUni(glyphCount); |
int maxGlyph = -1; |
for (UINT32 c = 0; c < 0x10FFFF; ++c) { |
- UINT16 glyph; |
- hr = fontFace->GetGlyphIndices(&c, 1, &glyph); |
- SkASSERT(glyph < glyphCount); |
+ UINT16 glyph = 0; |
+ HRVM(fontFace->GetGlyphIndices(&c, 1, &glyph), |
+ "Failed to get glyph index."); |
+ // Intermittent DW bug on Windows 10. See crbug.com/470146. |
+ if (glyph >= glyphCount) { |
+ return; |
+ } |
if (0 < glyph) { |
maxGlyph = SkTMax(static_cast<int>(glyph), maxGlyph); |
glyphToUni[glyph] = c; |