check for numerical imprecision on phase
fixes http://code.google.com/p/chromium/issues/detail?id=124652



git-svn-id: http://skia.googlecode.com/svn/trunk@3761 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
index 88f003b..d511ca6 100644
--- a/src/effects/SkDashPathEffect.cpp
+++ b/src/effects/SkDashPathEffect.cpp
@@ -50,7 +50,14 @@
                 phase = SkScalarMod(phase, len);
             }
             phase = len - phase;
-        } else if (phase >= len) {
+            // Due to finite precision, its possible that phase == len, even after the
+            // subtract (if len >>> phase), so we need to detect that here.
+            SkASSERT(phase <= len);
+            if (phase == len) {
+                phase = 0;
+            }
+        }
+        if (phase >= len) {
             phase = SkScalarMod(phase, len);
         }