| 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);
|
| }
|
|
|