fix Simplify pathop fuzz
Simplify was out of sync with Op, and needed
to return failure when contour could not be
followed.
Also fix timeout where coincident detection
got stuck.
R=kjlubick@google.com
Bug:898114
Change-Id: Ia9076b9fd48e093bcc40ef21809c8eabe4cb9367
Reviewed-on: https://skia-review.googlesource.com/c/164601
Commit-Queue: Cary Clark <caryclark@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Auto-Submit: Cary Clark <caryclark@skia.org>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
diff --git a/src/pathops/SkOpSegment.cpp b/src/pathops/SkOpSegment.cpp
index 89a39b4..7351b8d 100644
--- a/src/pathops/SkOpSegment.cpp
+++ b/src/pathops/SkOpSegment.cpp
@@ -1159,10 +1159,14 @@
SkOpSpan* prior = nullptr;
SkOpSpanBase* spanBase = &fHead;
bool result = false;
+ int safetyNet = 100000;
do {
SkOpPtT* ptT = spanBase->ptT(), * spanStopPtT = ptT;
SkOPASSERT(ptT->span() == spanBase);
while ((ptT = ptT->next()) != spanStopPtT) {
+ if (!--safetyNet) {
+ return false;
+ }
if (ptT->deleted()) {
continue;
}