Index: src/pathops/SkOpContour.cpp |
diff --git a/src/pathops/SkOpContour.cpp b/src/pathops/SkOpContour.cpp |
index 3b2318c306c5b88e55403907182a39dfb7dcc11d..981bd29573cc9981d0c7a8b2e5621201ec82e3d4 100644 |
--- a/src/pathops/SkOpContour.cpp |
+++ b/src/pathops/SkOpContour.cpp |
@@ -10,7 +10,7 @@ |
#include "SkReduceOrder.h" |
#include "SkTSort.h" |
-SkOpSegment* SkOpContour::addCurve(SkPath::Verb verb, const SkPoint pts[4]) { |
+SkOpSegment* SkOpContour::addCurve(SkPath::Verb verb, const SkPoint pts[4], SkScalar weight) { |
SkChunkAlloc* allocator = this->globalState()->allocator(); |
switch (verb) { |
case SkPath::kLine_Verb: { |
@@ -24,7 +24,9 @@ SkOpSegment* SkOpContour::addCurve(SkPath::Verb verb, const SkPoint pts[4]) { |
return appendSegment().addQuad(ptStorage, this); |
} break; |
case SkPath::kConic_Verb: { |
- SkASSERT(0); // the original curve is a cubic, which will never reduce to a conic |
+ SkPoint* ptStorage = SkOpTAllocator<SkPoint>::AllocateArray(allocator, 3); |
+ memcpy(ptStorage, pts, sizeof(SkPoint) * 3); |
+ return appendSegment().addConic(ptStorage, weight, this); |
} break; |
case SkPath::kCubic_Verb: { |
SkPoint* ptStorage = SkOpTAllocator<SkPoint>::AllocateArray(allocator, 4); |