Index: src/pathops/SkAddIntersections.cpp |
diff --git a/src/pathops/SkAddIntersections.cpp b/src/pathops/SkAddIntersections.cpp |
index 04f5bc384c1e3cdac560a96a35219d76ffe34e86..2abf67a09d75ec9021b5b6b1af6e02e986fb0123 100644 |
--- a/src/pathops/SkAddIntersections.cpp |
+++ b/src/pathops/SkAddIntersections.cpp |
@@ -510,7 +510,7 @@ bool AddIntersectTs(SkOpContour* test, SkOpContour* next, SkOpCoincidence* coinc |
SkOpPtT* nextTAt = wn.segment()->addT(ts[!swap][pt]); |
if (!testTAt->contains(nextTAt)) { |
SkOpPtT* oppPrev = testTAt->oppPrev(nextTAt); // Returns nullptr if pair |
- if (oppPrev) { // already shares a pt-t loop. |
+ if (oppPrev) { // already share a pt-t loop. |
testTAt->span()->mergeMatches(nextTAt->span()); |
testTAt->addOpp(nextTAt, oppPrev); |
} |
@@ -543,6 +543,14 @@ bool AddIntersectTs(SkOpContour* test, SkOpContour* next, SkOpCoincidence* coinc |
SkTSwap(testTAt, nextTAt); |
} |
SkASSERT(coinPtT[0]->span()->t() < testTAt->span()->t()); |
+ if (coinPtT[0]->span()->deleted()) { |
+ coinIndex = -1; |
+ continue; |
+ } |
+ if (testTAt->span()->deleted()) { |
+ coinIndex = -1; |
+ continue; |
+ } |
coincidence->add(coinPtT[0], testTAt, coinPtT[1], nextTAt); |
wt.segment()->debugValidate(); |
wn.segment()->debugValidate(); |