Index: src/pathops/SkOpEdgeBuilder.cpp |
diff --git a/src/pathops/SkOpEdgeBuilder.cpp b/src/pathops/SkOpEdgeBuilder.cpp |
index 24ca9b1f5687626ddde4f194b1fe3bda47330506..7216830993441780ca01cdbcf0b749b48549b2cd 100644 |
--- a/src/pathops/SkOpEdgeBuilder.cpp |
+++ b/src/pathops/SkOpEdgeBuilder.cpp |
@@ -202,7 +202,8 @@ bool SkOpEdgeBuilder::walk(SkChunkAlloc* allocator) { |
// split self-intersecting cubics in two before proceeding |
// if the cubic is convex, it doesn't self intersect. |
SkScalar loopT; |
- if (SkDCubic::ComplexBreak(pointsPtr, &loopT)) { |
+ SkDCubic::CubicType cubicType; |
+ if (SkDCubic::ComplexBreak(pointsPtr, &loopT, &cubicType)) { |
SkPoint cubicPair[7]; |
SkChopCubicAt(pointsPtr, cubicPair, loopT); |
if (!SkScalarsAreFinite(&cubicPair[0].fX, SK_ARRAY_COUNT(cubicPair) * 2)) { |
@@ -220,8 +221,8 @@ bool SkOpEdgeBuilder::walk(SkChunkAlloc* allocator) { |
for (int index = 0; index < SkPathOpsVerbToPoints(v2); ++index) { |
force_small_to_zero(&curve2[index]); |
} |
- fCurrentContour->addCurve(v1, curve1, fAllocator); |
- fCurrentContour->addCurve(v2, curve2, fAllocator); |
+ fCurrentContour->addCurve(v1, curve1, fAllocator)->setCubicType(cubicType); |
+ fCurrentContour->addCurve(v2, curve2, fAllocator)->setCubicType(cubicType); |
} else { |
fCurrentContour->addCubic(pointsPtr, fAllocator); |
} |