Index: src/pathops/SkOpCoincidence.cpp |
diff --git a/src/pathops/SkOpCoincidence.cpp b/src/pathops/SkOpCoincidence.cpp |
index c0147bcfd9e38a2525f9e361ef1d4396e0806376..130d1daff777eb392cf6183223b3035eeecc1ea3 100755 |
--- a/src/pathops/SkOpCoincidence.cpp |
+++ b/src/pathops/SkOpCoincidence.cpp |
@@ -634,16 +634,22 @@ void SkOpCoincidence::fixUp(SkOpPtT* deleted, SkOpPtT* kept) { |
} |
/* this sets up the coincidence links in the segments when the coincidence crosses multiple spans */ |
-void SkOpCoincidence::mark() { |
+bool SkOpCoincidence::mark() { |
SkCoincidentSpans* coin = fHead; |
if (!coin) { |
- return; |
+ return true; |
} |
do { |
SkOpSpanBase* end = coin->fCoinPtTEnd->span(); |
+ if (end->deleted()) { |
+ return false; |
+ } |
SkOpSpanBase* oldEnd = end; |
SkOpSpan* start = coin->fCoinPtTStart->span()->starter(&end); |
SkOpSpanBase* oEnd = coin->fOppPtTEnd->span(); |
+ if (oEnd->deleted()) { |
+ return false; |
+ } |
SkOpSpanBase* oOldEnd = oEnd; |
SkOpSpanBase* oStart = coin->fOppPtTStart->span()->starter(&oEnd); |
bool flipped = (end == oldEnd) != (oEnd == oOldEnd); |
@@ -668,6 +674,7 @@ void SkOpCoincidence::mark() { |
} |
} while (true); |
} while ((coin = coin->fNext)); |
+ return true; |
} |
bool SkOpCoincidence::overlap(const SkOpPtT* coin1s, const SkOpPtT* coin1e, |