Index: src/core/SkStroke.cpp |
diff --git a/src/core/SkStroke.cpp b/src/core/SkStroke.cpp |
index e04d14aea5adcf84f95f1c83bfd1ad1404702564..65267d11fd4e181f260f9c75043d371c3ce09ab5 100644 |
--- a/src/core/SkStroke.cpp |
+++ b/src/core/SkStroke.cpp |
@@ -836,14 +836,12 @@ SkPathStroker::ResultType SkPathStroker::intersectRay(SkQuadConstruct* quadPts, |
return STROKER_RESULT(kSplit_ResultType, depth, quadPts, |
"(numerA=%g >= 0) == (numerB=%g >= 0)", numerA, numerB); |
} |
- // check to see if the denomerator is teeny relative to the numerator |
- bool validDivide = SkScalarAbs(numerA) * SK_ScalarNearlyZero < SkScalarAbs(denom); |
-// the divide check is the same as checking if the scaled denom is nearly zero |
-// (commented out because on some platforms the two are not bit-identical) |
-// SkASSERT(!SkScalarNearlyZero(denom / numerA) == validDivide); |
+ // check to see if the denominator is teeny relative to the numerator |
+ // if the offset by one will be lost, the ratio is too large |
+ numerA /= denom; |
+ bool validDivide = numerA > numerA - 1; |
if (validDivide) { |
if (kCtrlPt_RayType == intersectRayType) { |
- numerA /= denom; |
SkPoint* ctrlPt = &quadPts->fQuad[1]; |
// the intersection of the tangents need not be on the tangent segment |
// so 0 <= numerA <= 1 is not necessarily true |