Index: src/pathops/SkOpEdgeBuilder.cpp |
diff --git a/src/pathops/SkOpEdgeBuilder.cpp b/src/pathops/SkOpEdgeBuilder.cpp |
index c304357575fd233f81364016b6030eacf537e3d2..7fc7d7213d7432ca30f3db25067ff7f304b2e0d3 100644 |
--- a/src/pathops/SkOpEdgeBuilder.cpp |
+++ b/src/pathops/SkOpEdgeBuilder.cpp |
@@ -231,7 +231,11 @@ bool SkOpEdgeBuilder::walk() { |
if (maxCurvature > 0) { |
SkConic conic(pointsPtr, weight); |
SkConic pair[2]; |
- conic.chopAt(maxCurvature, pair); |
+ if (!conic.chopAt(maxCurvature, pair)) { |
+ // if result can't be computed, use original |
+ fCurrentContour->addConic(pointsPtr, weight); |
+ break; |
+ } |
SkPoint cStorage[2][3]; |
SkPath::Verb v1 = SkReduceOrder::Conic(pair[0], cStorage[0]); |
SkPath::Verb v2 = SkReduceOrder::Conic(pair[1], cStorage[1]); |