diff options
-rwxr-xr-x | src/pathops/SkOpCoincidence.cpp | 8 | ||||
-rw-r--r-- | src/pathops/SkOpSegment.cpp | 2 | ||||
-rw-r--r-- | tests/PathOpsOpTest.cpp | 4 | ||||
-rw-r--r-- | tests/PathOpsSimplifyTest.cpp | 12 |
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), |