Index: src/pathops/SkOpSegment.cpp |
diff --git a/src/pathops/SkOpSegment.cpp b/src/pathops/SkOpSegment.cpp |
index 747cd9d4973b0087e3e0730b2f9894ead6e96f6f..336ac116be7d161d50d5461081bc9566b8aa9552 100644 |
--- a/src/pathops/SkOpSegment.cpp |
+++ b/src/pathops/SkOpSegment.cpp |
@@ -1293,7 +1293,8 @@ void SkOpSegment::addTCoincident(const SkPoint& startPt, const SkPoint& endPt, d |
double testT = test->fT; |
SkOpSpan* oTest = &other->fTs[oIndex]; |
const SkPoint* oTestPt = &oTest->fPt; |
- SkASSERT(AlmostEqualUlps(*testPt, *oTestPt)); |
+ // paths with extreme data will fail this test and eject out of pathops altogether later on |
+ // SkASSERT(AlmostEqualUlps(*testPt, *oTestPt)); |
do { |
SkASSERT(test->fT < 1); |
SkASSERT(oTest->fT < 1); |
@@ -1476,6 +1477,9 @@ bool SkOpSegment::calcAngles() { |
const SkOpSpan* span = &fTs[0]; |
if (firstSpan->fT == 0 || span->fTiny || span->fOtherT != 1 || span->fOther->multipleEnds()) { |
index = findStartSpan(0); // curve start intersects |
+ if (fTs[index].fT == 0) { |
+ return false; |
+ } |
SkASSERT(index > 0); |
if (activePrior >= 0) { |
addStartSpan(index); |