aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports
diff options
context:
space:
mode:
authorGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-21 19:44:39 +0000
committerGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-21 19:44:39 +0000
commite4ae0bc5caeed52e07c7e5939fa4ac38d9e408ab (patch)
tree6c256861b95ff3870046321c858aa3de53755fe8 /src/ports
parent5408f8ffdbca9efd787304d62dde6b142c3f0f82 (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.cpp2
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),