| Index: src/core/SkGeometry.cpp
|
| diff --git a/src/core/SkGeometry.cpp b/src/core/SkGeometry.cpp
|
| index 5d181a3a20ae045598765a7b64be4c7340408781..7dd5359b7dea112e9c2280a39d902a5335b12489 100644
|
| --- a/src/core/SkGeometry.cpp
|
| +++ b/src/core/SkGeometry.cpp
|
| @@ -1170,9 +1170,18 @@ static SkPoint* subdivide(const SkConic& src, SkPoint pts[], int level) {
|
|
|
| int SkConic::chopIntoQuadsPOW2(SkPoint pts[], int pow2) const {
|
| SkASSERT(pow2 >= 0);
|
| + const int quadCount = 1 << pow2;
|
| + const int ptCount = 2 * quadCount + 1;
|
| *pts = fPts[0];
|
| SkDEBUGCODE(SkPoint* endPts =) subdivide(*this, pts + 1, pow2);
|
| - SkASSERT(endPts - pts == (2 * (1 << pow2) + 1));
|
| + SkASSERT(endPts - pts == ptCount);
|
| + if (!SkPointsAreFinite(pts, ptCount)) {
|
| + // if we generated a non-finite, pin ourselves to the middle of the hull,
|
| + // as our first and last are already on the first/last pts of the hull.
|
| + for (int i = 1; i < ptCount - 1; ++i) {
|
| + pts[i] = fPts[1];
|
| + }
|
| + }
|
| return 1 << pow2;
|
| }
|
|
|
|
|