diff options
Diffstat (limited to 'src/shaders/gradients/SkTwoPointConicalGradient.cpp')
-rw-r--r-- | src/shaders/gradients/SkTwoPointConicalGradient.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/shaders/gradients/SkTwoPointConicalGradient.cpp b/src/shaders/gradients/SkTwoPointConicalGradient.cpp index 48877da34c..d98f4bce20 100644 --- a/src/shaders/gradients/SkTwoPointConicalGradient.cpp +++ b/src/shaders/gradients/SkTwoPointConicalGradient.cpp @@ -54,6 +54,9 @@ sk_sp<SkShader> SkTwoPointConicalGradient::Create(const SkPoint& c0, SkScalar r0 Type gradientType; if (SkScalarNearlyZero((c0 - c1).length())) { + if (SkScalarNearlyZero(SkTMax(r0, r1))) { + return nullptr; // Degenerate case; avoid dividing by zero. + } // Concentric case: we can pretend we're radial (with a tiny twist). const SkScalar scale = sk_ieee_float_divide(1, SkTMax(r0, r1)); gradientMatrix = SkMatrix::MakeTrans(-c1.x(), -c1.y()); |