aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/SkPathMeasure.cpp3
-rw-r--r--tests/DashPathEffectTest.cpp17
2 files changed, 20 insertions, 0 deletions
diff --git a/src/core/SkPathMeasure.cpp b/src/core/SkPathMeasure.cpp
index b06bef7fc5..c0d97924cb 100644
--- a/src/core/SkPathMeasure.cpp
+++ b/src/core/SkPathMeasure.cpp
@@ -652,6 +652,9 @@ bool SkPathMeasure::getSegment(SkScalar startD, SkScalar stopD, SkPath* dst,
if (startD > stopD) {
return false;
}
+ if (!fSegments.count()) {
+ return false;
+ }
SkPoint p;
SkScalar startT, stopT;
diff --git a/tests/DashPathEffectTest.cpp b/tests/DashPathEffectTest.cpp
index f55bcf8a85..68fce9a142 100644
--- a/tests/DashPathEffectTest.cpp
+++ b/tests/DashPathEffectTest.cpp
@@ -87,3 +87,20 @@ DEF_TEST(DashPathEffectTest_asPoints, r) {
}
}
}
+
+DEF_TEST(DashPath_bug4871, r) {
+ SkPath path;
+ path.moveTo(30, 24);
+ path.cubicTo(30.002f, 24, 30, 24, 30, 24);
+ path.close();
+
+ SkScalar intervals[2] = { 1, 1 };
+ SkAutoTUnref<SkPathEffect> dash(SkDashPathEffect::Create(intervals, 2, 0));
+
+ SkPaint paint;
+ paint.setStyle(SkPaint::kStroke_Style);
+ paint.setPathEffect(dash);
+
+ SkPath fill;
+ paint.getFillPath(path, &fill);
+}