diff options
author | 2014-05-21 19:44:39 +0000 | |
---|---|---|
committer | 2014-05-21 19:44:39 +0000 | |
commit | e4ae0bc5caeed52e07c7e5939fa4ac38d9e408ab (patch) | |
tree | 6c256861b95ff3870046321c858aa3de53755fe8 /src/ports | |
parent | 5408f8ffdbca9efd787304d62dde6b142c3f0f82 (diff) |
Fix undefined behavior in DirectWrite GDI compatible metrics.
GetGdiCompatibleGlyphMetrics checks the matrix passed to it.
If the matrix has any NaNs or INFs or otherwise looks bad, it returns
E_INVALIDARG and so the advances will be zero.
BUG=skia:2579
R=reed@google.com
Review URL: https://codereview.chromium.org/298863002
git-svn-id: http://skia.googlecode.com/svn/trunk@14829 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/ports')
-rw-r--r-- | src/ports/SkFontHost_win_dw.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/ports/SkFontHost_win_dw.cpp b/src/ports/SkFontHost_win_dw.cpp index 431eeacca5..e024b465aa 100644 --- a/src/ports/SkFontHost_win_dw.cpp +++ b/src/ports/SkFontHost_win_dw.cpp @@ -801,6 +801,8 @@ SkScalerContext_DW::SkScalerContext_DW(DWriteFontTypeface* typeface, fGsA.m12 = SkScalarToFloat(GsA.get(SkMatrix::kMSkewY)); // This should be ~0. fGsA.m21 = SkScalarToFloat(GsA.get(SkMatrix::kMSkewX)); fGsA.m22 = SkScalarToFloat(GsA.get(SkMatrix::kMScaleY)); + fGsA.dx = 0; + fGsA.dy = 0; // fG_inv is G inverse, which is fairly simple since G is 2x2 rotational. fG_inv.setAll(G.get(SkMatrix::kMScaleX), -G.get(SkMatrix::kMSkewX), G.get(SkMatrix::kMTransX), |