| Index: src/pathops/SkOpSegment.cpp | 
| diff --git a/src/pathops/SkOpSegment.cpp b/src/pathops/SkOpSegment.cpp | 
| index 2246f36ff217b4aa33375c8537d166d971347c07..6012d832bf349cb63d607bcf22a5ccc719a5fc10 100644 | 
| --- a/src/pathops/SkOpSegment.cpp | 
| +++ b/src/pathops/SkOpSegment.cpp | 
| @@ -855,7 +855,7 @@ bool SkOpSegment::markAndChaseWinding(SkOpSpanBase* start, SkOpSpanBase* end, in | 
| SkOpSegment* other = this; | 
| while ((other = other->nextChase(&start, &step, &spanStart, &last))) { | 
| if (spanStart->windSum() != SK_MinS32) { | 
| -            SkASSERT(spanStart->windSum() == winding); | 
| +//            SkASSERT(spanStart->windSum() == winding);   // FIXME: is this assert too aggressive? | 
| SkASSERT(!last); | 
| break; | 
| } | 
| @@ -1459,7 +1459,7 @@ void SkOpSegment::setUpWindings(SkOpSpanBase* start, SkOpSpanBase* end, int* sum | 
| SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(*oppSumWinding) <= DEBUG_LIMIT_WIND_SUM); | 
| } | 
|  | 
| -void SkOpSegment::sortAngles() { | 
| +bool SkOpSegment::sortAngles() { | 
| SkOpSpanBase* span = &this->fHead; | 
| do { | 
| SkOpAngle* fromAngle = span->fromAngle(); | 
| @@ -1477,7 +1477,7 @@ void SkOpSegment::sortAngles() { | 
| span->debugID()); | 
| wroteAfterHeader = true; | 
| #endif | 
| -            fromAngle->insert(toAngle); | 
| +            FAIL_IF(!fromAngle->insert(toAngle)); | 
| } else if (!fromAngle) { | 
| baseAngle = toAngle; | 
| } | 
| @@ -1527,6 +1527,7 @@ void SkOpSegment::sortAngles() { | 
| SkASSERT(!baseAngle || baseAngle->loopCount() > 1); | 
| #endif | 
| } while (!span->final() && (span = span->upCast()->next())); | 
| +    return true; | 
| } | 
|  | 
| bool SkOpSegment::subDivide(const SkOpSpanBase* start, const SkOpSpanBase* end, | 
|  |