diff options
author | Brian Salomon <bsalomon@google.com> | 2017-12-19 16:27:56 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-19 22:20:06 +0000 |
commit | 27d9365d9a3d62125c83998136e3e13a6b5591ec (patch) | |
tree | 7e5267f81a679755c29a290acb03ab763539ecf8 /src/gpu | |
parent | 0a241ce808511ceb1c72d6f2473b01b455ac5101 (diff) |
Protect against nans causing infinite recursion in GrPathUtils::convertCubicToQuads
Bug: skia:7427
Change-Id: I72426574be20cd41981bbb8366bda039443aa606
Reviewed-on: https://skia-review.googlesource.com/87302
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrPathUtils.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gpu/GrPathUtils.cpp b/src/gpu/GrPathUtils.cpp index e36c67cc88..74a53e9e09 100644 --- a/src/gpu/GrPathUtils.cpp +++ b/src/gpu/GrPathUtils.cpp @@ -540,6 +540,9 @@ void convert_noninflect_cubic_to_quads(const SkPoint p[4], void GrPathUtils::convertCubicToQuads(const SkPoint p[4], SkScalar tolScale, SkTArray<SkPoint, true>* quads) { + if (!p[0].isFinite() || !p[1].isFinite() || !p[2].isFinite() || !p[3].isFinite()) { + return; + } SkPoint chopped[10]; int count = SkChopCubicAtInflections(p, chopped); @@ -557,6 +560,9 @@ void GrPathUtils::convertCubicToQuadsConstrainToTangents(const SkPoint p[4], SkScalar tolScale, SkPathPriv::FirstDirection dir, SkTArray<SkPoint, true>* quads) { + if (!p[0].isFinite() || !p[1].isFinite() || !p[2].isFinite() || !p[3].isFinite()) { + return; + } SkPoint chopped[10]; int count = SkChopCubicAtInflections(p, chopped); |