aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xsrc/pathops/SkOpCoincidence.cpp8
-rw-r--r--src/pathops/SkOpSegment.cpp2
-rw-r--r--tests/PathOpsOpTest.cpp4
-rw-r--r--tests/PathOpsSimplifyTest.cpp12
4 files changed, 16 insertions, 10 deletions
diff --git a/src/pathops/SkOpCoincidence.cpp b/src/pathops/SkOpCoincidence.cpp
index bb26b1370f..addd2f97eb 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();
diff --git a/src/pathops/SkOpSegment.cpp b/src/pathops/SkOpSegment.cpp
index 0e4eb64141..de74f7d557 100644
--- a/src/pathops/SkOpSegment.cpp
+++ b/src/pathops/SkOpSegment.cpp
@@ -1167,7 +1167,7 @@ bool SkOpSegment::missingCoincidence() {
bool result = false;
do {
SkOpPtT* ptT = spanBase->ptT(), * spanStopPtT = ptT;
- SkASSERT(ptT->span() == spanBase);
+ SkOPASSERT(ptT->span() == spanBase);
while ((ptT = ptT->next()) != spanStopPtT) {
if (ptT->deleted()) {
continue;
diff --git a/tests/PathOpsOpTest.cpp b/tests/PathOpsOpTest.cpp
index aba4e86ce5..c01d221fa3 100644
--- a/tests/PathOpsOpTest.cpp
+++ b/tests/PathOpsOpTest.cpp
@@ -7144,7 +7144,7 @@ path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x
path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
SkPath path2(path);
- testPathOpFail(reporter, path1, path2, (SkPathOp) 0, filename);
+ testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 0, filename);
}
static void fuzz763_24(skiatest::Reporter* reporter, const char* filename) {
@@ -7197,8 +7197,8 @@ path.cubicTo(SkBits2Float(0x9e9e9e9e), SkBits2Float(0xe8009e9e), SkBits2Float(0x
}
static struct TestDesc failTests[] = {
- TEST(fuzz763_24),
TEST(fuzz763_23),
+ TEST(fuzz763_24),
TEST(fuzz763_22),
TEST(fuzz763_21),
TEST(fuzz763_20),
diff --git a/tests/PathOpsSimplifyTest.cpp b/tests/PathOpsSimplifyTest.cpp
index 6e92f0f918..af2e09d79f 100644
--- a/tests/PathOpsSimplifyTest.cpp
+++ b/tests/PathOpsSimplifyTest.cpp
@@ -5256,7 +5256,7 @@ static void tiger8a_h_1(skiatest::Reporter* reporter, const char* filename) {
#if DEBUG_UNDER_DEVELOPMENT // tiger
return;
#endif
- uint64_t testlines = 0x0000000280802863; // best so far: 0x0000001610031021;
+ uint64_t testlines = 0x0000000202480001; // best so far: 0x0000001610031021;
tiger8a_x(reporter, filename, testlines);
}
@@ -5789,6 +5789,11 @@ static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0;
static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
static TestDesc tests[] = {
+ TEST(tiger8a_h_1),
+ TEST(tiger8a_h),
+ TEST(tiger8a),
+ TEST(tiger8b),
+ TEST(tiger8),
TEST(testQuads72),
TEST(testQuads71),
TEST(testQuads70),
@@ -5797,11 +5802,6 @@ static TestDesc tests[] = {
TEST(testQuads67),
TEST(testQuads66),
TEST(dean4),
- TEST(tiger8a_h_1),
- TEST(tiger8a_h),
- TEST(tiger8a),
- TEST(tiger8b),
- TEST(tiger8),
TEST(fuzz763_4713_b),
TEST(fuzz_twister2),
TEST(fuzz_twister),