aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrPathUtils.cpp
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-12-19 16:27:56 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-19 22:20:06 +0000
commit27d9365d9a3d62125c83998136e3e13a6b5591ec (patch)
tree7e5267f81a679755c29a290acb03ab763539ecf8 /src/gpu/GrPathUtils.cpp
parent0a241ce808511ceb1c72d6f2473b01b455ac5101 (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/GrPathUtils.cpp')
-rw-r--r--src/gpu/GrPathUtils.cpp6
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);