| Index: src/pathops/SkOpCoincidence.cpp
|
| diff --git a/src/pathops/SkOpCoincidence.cpp b/src/pathops/SkOpCoincidence.cpp
|
| index af330dfe1eb68bb6d06b177595987468eda6f25d..d750ce78b97fe39ab007c5eceaa9809bf9828b60 100755
|
| --- a/src/pathops/SkOpCoincidence.cpp
|
| +++ b/src/pathops/SkOpCoincidence.cpp
|
| @@ -268,7 +268,7 @@ void SkOpCoincidence::add(SkOpPtT* coinPtTStart, SkOpPtT* coinPtTEnd, SkOpPtT* o
|
| }
|
|
|
| // description below
|
| -void SkOpCoincidence::addEndMovedSpans(const SkOpSpan* base, const SkOpSpanBase* testSpan) {
|
| +bool SkOpCoincidence::addEndMovedSpans(const SkOpSpan* base, const SkOpSpanBase* testSpan) {
|
| const SkOpPtT* testPtT = testSpan->ptT();
|
| const SkOpPtT* stopPtT = testPtT;
|
| const SkOpSegment* baseSeg = base->segment();
|
| @@ -324,9 +324,12 @@ void SkOpCoincidence::addEndMovedSpans(const SkOpSpan* base, const SkOpSpanBase*
|
| SkTSwap(coinTs, coinTe);
|
| SkTSwap(oppTs, oppTe);
|
| }
|
| - (void) this->addOrOverlap(coinSeg, oppSeg, coinTs, coinTe, oppTs, oppTe);
|
| + if (!this->addOrOverlap(coinSeg, oppSeg, coinTs, coinTe, oppTs, oppTe)) {
|
| + return false;
|
| + }
|
| }
|
| }
|
| + return true;
|
| }
|
|
|
| // description below
|
| @@ -337,10 +340,14 @@ bool SkOpCoincidence::addEndMovedSpans(const SkOpPtT* ptT) {
|
| return false;
|
| }
|
| if (!prev->isCanceled()) {
|
| - this->addEndMovedSpans(base, base->prev());
|
| + if (!this->addEndMovedSpans(base, base->prev())) {
|
| + return false;
|
| + }
|
| }
|
| if (!base->isCanceled()) {
|
| - this->addEndMovedSpans(base, base->next());
|
| + if (!this->addEndMovedSpans(base, base->next())) {
|
| + return false;
|
| + }
|
| }
|
| return true;
|
| }
|
| @@ -631,7 +638,9 @@ bool SkOpCoincidence::addOrOverlap(SkOpSegment* coinSeg, SkOpSegment* oppSeg,
|
| if (overlap && cs && ce && overlap->contains(cs, ce)) {
|
| return false;
|
| }
|
| - SkASSERT(cs != ce || !cs);
|
| + if (cs == ce && cs) {
|
| + return false;
|
| + }
|
| const SkOpPtT* os = oppSeg->existing(oppTs, coinSeg);
|
| const SkOpPtT* oe = oppSeg->existing(oppTe, coinSeg);
|
| if (overlap && os && oe && overlap->contains(os, oe)) {
|
|
|