Index: src/pathops/SkOpCoincidence.cpp |
diff --git a/src/pathops/SkOpCoincidence.cpp b/src/pathops/SkOpCoincidence.cpp |
index bb26b1370f6e3acdb82efa995f32f61a2b85a641..addd2f97eb28d9bdb13fc8928c06443219d0c27f 100755 |
--- a/src/pathops/SkOpCoincidence.cpp |
+++ b/src/pathops/SkOpCoincidence.cpp |
@@ -69,6 +69,9 @@ bool SkCoincidentSpans::expand() { |
do { |
const SkOpSpanBase* end = coinPtTEnd()->span(); |
SkOpSpanBase* next = end->final() ? nullptr : end->upCast()->next(); |
+ if (next && next->deleted()) { |
+ break; |
+ } |
const SkOpPtT* oppPtT; |
if (!next || !(oppPtT = next->contains(oppSegment))) { |
break; |
@@ -280,6 +283,9 @@ bool SkOpCoincidence::addEndMovedSpans(const SkOpSpan* base, const SkOpSpanBase* |
if (testSeg == baseSeg) { |
continue; |
} |
+ if (testPtT->span()->ptT() != testPtT) { |
+ continue; |
+ } |
if (this->contains(baseSeg, testSeg, testPtT->fT)) { |
continue; |
} |
@@ -422,7 +428,7 @@ bool SkOpCoincidence::addExpanded() { |
const SkOpPtT* startPtT = coin->coinPtTStart(); |
const SkOpPtT* oStartPtT = coin->oppPtTStart(); |
SkASSERT(startPtT->contains(oStartPtT)); |
- SkASSERT(coin->coinPtTEnd()->contains(coin->oppPtTEnd())); |
+ SkOPASSERT(coin->coinPtTEnd()->contains(coin->oppPtTEnd())); |
const SkOpSpanBase* start = startPtT->span(); |
const SkOpSpanBase* oStart = oStartPtT->span(); |
const SkOpSpanBase* end = coin->coinPtTEnd()->span(); |