fix teeny dashed path bug

If the path dashed is sufficiently small, there may be no
segments generated to dash. Check for an empty segment list.

R=reed@google.com
BUG=skia:4871
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1645613006

Review URL: https://codereview.chromium.org/1645613006
diff --git a/src/core/SkPathMeasure.cpp b/src/core/SkPathMeasure.cpp
index b06bef7..c0d9792 100644
--- a/src/core/SkPathMeasure.cpp
+++ b/src/core/SkPathMeasure.cpp
@@ -652,6 +652,9 @@
     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 f55bcf8..68fce9a 100644
--- a/tests/DashPathEffectTest.cpp
+++ b/tests/DashPathEffectTest.cpp
@@ -87,3 +87,20 @@
         }
     }
 }
+
+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);
+}