check for non-finite values that can make us overshoot
git-svn-id: http://skia.googlecode.com/svn/trunk@1870 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
index b1f58e6..f593b57 100644
--- a/src/effects/SkDashPathEffect.cpp
+++ b/src/effects/SkDashPathEffect.cpp
@@ -62,12 +62,18 @@
phase = SkScalarMod(phase, len);
}
+ // got to watch out for values that might make us go out of bounds
+ if (!SkScalarIsFinite(phase) || !SkScalarIsFinite(len)) {
+ goto BAD_DASH;
+ }
+
SkASSERT(phase >= 0 && phase < len);
fInitialDashLength = FindFirstInterval(intervals, phase, &fInitialDashIndex);
SkASSERT(fInitialDashLength >= 0);
SkASSERT(fInitialDashIndex >= 0 && fInitialDashIndex < fCount);
} else {
+ BAD_DASH:
fInitialDashLength = -1; // signal bad dash intervals
}
}