From 276e63361c73fed6c6528b322400ece81fd1d067 Mon Sep 17 00:00:00 2001 From: mbarbella Date: Tue, 31 May 2016 14:44:01 -0700 Subject: Check results from calls to SkCubicClipper::ChopMonoAtY. BUG=613918 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2006143009 Review-Url: https://codereview.chromium.org/2006143009 --- src/core/SkPath.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp index aabcafdd11..5cd6316c7f 100644 --- a/src/core/SkPath.cpp +++ b/src/core/SkPath.cpp @@ -2812,7 +2812,9 @@ static int winding_mono_cubic(const SkPoint pts[], SkScalar x, SkScalar y, int* // compute the actual x(t) value SkScalar t; - SkAssertResult(SkCubicClipper::ChopMonoAtY(pts, y, &t)); + if (!SkCubicClipper::ChopMonoAtY(pts, y, &t)) { + return 0; + } SkScalar xt = eval_cubic_pts(pts[0].fX, pts[1].fX, pts[2].fX, pts[3].fX, t); if (SkScalarNearlyEqual(xt, x)) { if (x != pts[3].fX || y != pts[3].fY) { // don't test end points; they're start points @@ -3049,7 +3051,9 @@ static void tangent_cubic(const SkPoint pts[], SkScalar x, SkScalar y, for (int i = 0; i <= n; ++i) { SkPoint* c = &dst[i * 3]; SkScalar t; - SkAssertResult(SkCubicClipper::ChopMonoAtY(c, y, &t)); + if (!SkCubicClipper::ChopMonoAtY(c, y, &t)) { + continue; + } SkScalar xt = eval_cubic_pts(c[0].fX, c[1].fX, c[2].fX, c[3].fX, t); if (!SkScalarNearlyEqual(x, xt)) { continue; -- cgit v1.2.3