Index: src/pathops/SkOpAngle.cpp |
diff --git a/src/pathops/SkOpAngle.cpp b/src/pathops/SkOpAngle.cpp |
index 0c87d3ba9e840939bea323d5a6f6ba456e89b0c3..b3a188c1e82307434d848e08dabbab16c6806e03 100644 |
--- a/src/pathops/SkOpAngle.cpp |
+++ b/src/pathops/SkOpAngle.cpp |
@@ -409,7 +409,12 @@ bool SkOpAngle::endsIntersect(const SkOpAngle& rh) const { |
for (int index = 0; index < 2; ++index) { |
const SkOpSegment& segment = index ? *rh.fSegment : *fSegment; |
SkIntersections i; |
- (*CurveIntersectRay[index ? rPts : lPts])(segment.pts(), rays[index], &i); |
+ int cPts = index ? rPts : lPts; |
+ (*CurveIntersectRay[cPts])(segment.pts(), rays[index], &i); |
+ // if the curve is a line, then the line and the ray intersect only at their crossing |
+ if (cPts == 1) { // line |
+ continue; |
+ } |
// SkASSERT(i.used() >= 1); |
// if (i.used() <= 1) { |
// continue; |
@@ -657,7 +662,7 @@ void SkOpAngle::insert(SkOpAngle* angle) { |
} |
SkOpAngle* next = fNext; |
if (next->fNext == this) { |
- if (angle->overlap(*this)) { |
+ if (angle->overlap(*this)) { // angles are essentially coincident |
return; |
} |
if (singleton || angle->after(this)) { |
@@ -777,7 +782,7 @@ bool SkOpAngle::merge(SkOpAngle* angle) { |
working = next; |
} while (working != angle); |
// it's likely that a pair of the angles are unorderable |
-#if DEBUG_ANGLE |
+#if 0 && DEBUG_ANGLE |
SkOpAngle* last = angle; |
working = angle->fNext; |
do { |