Index: src/pathops/SkOpCoincidence.cpp |
diff --git a/src/pathops/SkOpCoincidence.cpp b/src/pathops/SkOpCoincidence.cpp |
index c7a39fcd6cefbbaee3e2969624d97eca75063115..719c9398696b88cf0609991874c68e695df91b3b 100755 |
--- a/src/pathops/SkOpCoincidence.cpp |
+++ b/src/pathops/SkOpCoincidence.cpp |
@@ -746,8 +746,8 @@ bool SkOpCoincidence::addOrOverlap(SkOpSegment* coinSeg, SkOpSegment* oppSeg, |
const SkOpPtT* csExisting = !cs ? coinSeg->existing(coinTs, nullptr) : nullptr; |
const SkOpPtT* ceExisting = !ce ? coinSeg->existing(coinTe, nullptr) : nullptr; |
FAIL_IF(csExisting && csExisting == ceExisting); |
- FAIL_IF(csExisting && (csExisting == ce || |
- csExisting->contains(ceExisting ? ceExisting : ce))); |
+// FAIL_IF(csExisting && (csExisting == ce || |
+// csExisting->contains(ceExisting ? ceExisting : ce))); |
FAIL_IF(ceExisting && (ceExisting == cs || |
ceExisting->contains(csExisting ? csExisting : cs))); |
const SkOpPtT* osExisting = !os ? oppSeg->existing(oppTs, nullptr) : nullptr; |
@@ -762,6 +762,9 @@ bool SkOpCoincidence::addOrOverlap(SkOpSegment* coinSeg, SkOpSegment* oppSeg, |
if (!cs || !os) { |
SkOpPtT* csWritable = cs ? const_cast<SkOpPtT*>(cs) |
: coinSeg->addT(coinTs); |
+ if (csWritable == ce) { |
+ return true; |
+ } |
SkOpPtT* osWritable = os ? const_cast<SkOpPtT*>(os) |
: oppSeg->addT(oppTs); |
FAIL_IF(!csWritable || !osWritable); |