diff options
-rw-r--r-- | src/core/SkPathMeasure.cpp | 3 | ||||
-rw-r--r-- | tests/DashPathEffectTest.cpp | 17 |
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); +} |