| Index: src/pathops/SkOpAngle.cpp | 
| diff --git a/src/pathops/SkOpAngle.cpp b/src/pathops/SkOpAngle.cpp | 
| index c1e2eae831062c8abb337b100baeeb8e1d7a1200..5e1d9e745ebf98c14eed55dd874121155801de8f 100644 | 
| --- a/src/pathops/SkOpAngle.cpp | 
| +++ b/src/pathops/SkOpAngle.cpp | 
| @@ -131,6 +131,9 @@ bool SkOpAngle::operator<(const SkOpAngle& rh) const {  // this/lh: left-hand; r | 
| if (!SkDLine::NearRay(x, y, rx, ry) && x_ry != rx_y) { | 
| return COMPARE_RESULT("7 !fComputed && !rh.fComputed", x_ry < rx_y); | 
| } | 
| +            if (fSide2 == 0 && rh.fSide2 == 0) { | 
| +                return COMPARE_RESULT("7a !fComputed && !rh.fComputed", x_ry < rx_y); | 
| +            } | 
| } else { | 
| // if the vector was a result of subdividing a curve, see if it is stable | 
| bool sloppy1 = x_ry < rx_y; | 
| @@ -142,8 +145,12 @@ bool SkOpAngle::operator<(const SkOpAngle& rh) const {  // this/lh: left-hand; r | 
| } | 
| } | 
| } | 
| -    if (fSide2 * rh.fSide2 == 0) { | 
| -//        SkASSERT(fSide2 + rh.fSide2 != 0); // hitting this assert means coincidence was undetected | 
| +    if (fSide2 * rh.fSide2 == 0) {  // one is zero | 
| +#if DEBUG_ANGLE | 
| +        if (fSide2 == rh.fSide2 && y_ry) {  // both is zero; coincidence was undetected | 
| +            SkDebugf("%s coincidence!\n", __FUNCTION__); | 
| +        } | 
| +#endif | 
| return COMPARE_RESULT("9a fSide2 * rh.fSide2 == 0 ...", fSide2 < rh.fSide2); | 
| } | 
| // at this point, the initial tangent line is nearly coincident | 
| @@ -409,8 +416,15 @@ void SkOpAngle::setSpans() { | 
|  | 
| #ifdef SK_DEBUG | 
| void SkOpAngle::dump() const { | 
| -    SkDebugf("id=%d (%1.9g,%1.9g) start=%d (%1.9g) end=%d (%1.9g)\n", fSegment->debugID(), | 
| -            fSegment->xAtT(fStart), fSegment->yAtT(fStart), fStart, fSegment->span(fStart).fT, | 
| -            fEnd, fSegment->span(fEnd).fT); | 
| +    const SkOpSpan& spanStart = fSegment->span(fStart); | 
| +    const SkOpSpan& spanEnd = fSegment->span(fEnd); | 
| +    const SkOpSpan& spanMin = fStart < fEnd ? spanStart : spanEnd; | 
| +    SkDebugf("id=%d (%1.9g,%1.9g) start=%d (%1.9g) end=%d (%1.9g) sumWind=", | 
| +            fSegment->debugID(), fSegment->xAtT(fStart), fSegment->yAtT(fStart), | 
| +            fStart, spanStart.fT, fEnd, spanEnd.fT); | 
| +    SkPathOpsDebug::WindingPrintf(spanMin.fWindSum); | 
| +    SkDebugf(" oppWind="); | 
| +    SkPathOpsDebug::WindingPrintf(spanMin.fOppSum), | 
| +    SkDebugf(" done=%d\n", spanMin.fDone); | 
| } | 
| #endif | 
|  |