diff options
Diffstat (limited to 'src/effects/SkDiscretePathEffect.cpp')
-rw-r--r-- | src/effects/SkDiscretePathEffect.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/effects/SkDiscretePathEffect.cpp b/src/effects/SkDiscretePathEffect.cpp index e8c0ec9ad2..06b9d19c68 100644 --- a/src/effects/SkDiscretePathEffect.cpp +++ b/src/effects/SkDiscretePathEffect.cpp @@ -50,14 +50,17 @@ bool SkDiscretePathEffect::filterPath(SkPath* dst, const SkPath& src, n -= 1; distance += delta/2; } - meas.getPosTan(distance, &p, &v); - Perterb(&p, v, SkScalarMul(rand.nextSScalar1(), scale)); - dst->moveTo(p); + + if (meas.getPosTan(distance, &p, &v)) { + Perterb(&p, v, SkScalarMul(rand.nextSScalar1(), scale)); + dst->moveTo(p); + } while (--n >= 0) { distance += delta; - meas.getPosTan(distance, &p, &v); - Perterb(&p, v, SkScalarMul(rand.nextSScalar1(), scale)); - dst->lineTo(p); + if (meas.getPosTan(distance, &p, &v)) { + Perterb(&p, v, SkScalarMul(rand.nextSScalar1(), scale)); + dst->lineTo(p); + } } if (meas.isClosed()) { dst->close(); |