remove bogus nearlyzero checks
Review URL: https://codereview.appspot.com/6213060

git-svn-id: http://skia.googlecode.com/svn/trunk@4014 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/dashing.cpp b/gm/dashing.cpp
index 2fdda4f..196b401 100644
--- a/gm/dashing.cpp
+++ b/gm/dashing.cpp
@@ -10,7 +10,8 @@
 #include "SkPaint.h"
 #include "SkDashPathEffect.h"
 
-static void drawline(SkCanvas* canvas, int on, int off, const SkPaint& paint) {
+static void drawline(SkCanvas* canvas, int on, int off, const SkPaint& paint,
+                     SkScalar finalX = SkIntToScalar(600)) {
     SkPaint p(paint);
 
     const SkScalar intervals[] = {
@@ -19,7 +20,16 @@
     };
 
     p.setPathEffect(new SkDashPathEffect(intervals, 2, 0))->unref();
-    canvas->drawLine(0, 0, SkIntToScalar(600), 0, p);
+    canvas->drawLine(0, 0, finalX, 0, p);
+}
+
+// earlier bug stopped us from drawing very long single-segment dashes, because
+// SkPathMeasure was skipping very small delta-T values (nearlyzero). This is
+// now fixes, so this giant dash should appear.
+static void show_giant_dash(SkCanvas* canvas) {
+    SkPaint paint;
+
+    drawline(canvas, 1, 1, paint, SkIntToScalar(20 * 1000));
 }
 
 class DashingGM : public skiagm::GM {
@@ -64,6 +74,8 @@
                 }
             }
         }
+        
+        show_giant_dash(canvas);
     }
 };
 
diff --git a/src/core/SkPathMeasure.cpp b/src/core/SkPathMeasure.cpp
index 887c0c1..b591aac 100644
--- a/src/core/SkPathMeasure.cpp
+++ b/src/core/SkPathMeasure.cpp
@@ -96,10 +96,6 @@
         distance = this->compute_quad_segs(&tmp[2], distance, halft, maxt, ptIndex);
     } else {
         SkScalar d = SkPoint::Distance(pts[0], pts[2]);
-        SkASSERT(d >= 0);
-        if (SkScalarNearlyZero(d)) {
-            d = 0;
-        }
         SkScalar prevD = distance;
         distance += d;
         if (distance > prevD) {
@@ -124,10 +120,6 @@
         distance = this->compute_cubic_segs(&tmp[3], distance, halft, maxt, ptIndex);
     } else {
         SkScalar d = SkPoint::Distance(pts[0], pts[3]);
-        SkASSERT(d >= 0);
-        if (SkScalarNearlyZero(d)) {
-            d = 0;
-        }
         SkScalar prevD = distance;
         distance += d;
         if (distance > prevD) {
@@ -283,8 +275,8 @@
     SkASSERT(stopT >= 0 && stopT <= SK_Scalar1);
     SkASSERT(startT <= stopT);
 
-    if (SkScalarNearlyZero(stopT - startT)) {
-        return;
+    if (startT == stopT) {
+        return; // should we report this, to undo a moveTo?
     }
 
     SkPoint         tmp0[7], tmp1[7];