Fix TAP ASAN failure.

The current SkFixed3232 pinning logic in SkClampRange is not safe:
SkFixed3232ToFloat(SkFixed3232Max) and SkFixed3232ToFloat(SkFixed3232Min)
are not exactly representable in float, so they are not good SkTPin
limits.

Use the next representable float value towards zero.  Constants computed
with nextafterf(..., 0).

Change-Id: I8e2eb35b22f65077e8ce6055d670d90d2a163bae
Reviewed-on: https://skia-review.googlesource.com/8662
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
diff --git a/src/effects/gradients/SkClampRange.h b/src/effects/gradients/SkClampRange.h
index 91c259a..8a22e72 100644
--- a/src/effects/gradients/SkClampRange.h
+++ b/src/effects/gradients/SkClampRange.h
@@ -12,9 +12,18 @@
 #include "SkScalar.h"
 
 #define SkGradFixed               SkFixed3232
-#define SkScalarPinToGradFixed(x) SkScalarToFixed3232(SkTPin(x,                                 \
-                                                             SkFixed3232ToFloat(SkFixed3232Min),\
-                                                             SkFixed3232ToFloat(SkFixed3232Max)))
+
+// We want the largest 32.32 value representable as a float. (float)0x7FFFFFFF
+// becomes too big, due to limited mantissa on the float and its rounding rules, so
+// we have to manually compute the next smaller value (aka nextafter).
+
+// #define SkGradFixedMaxScalar nextafterf(SkFixed3232ToFloat(SkFixed3232Max), 0)
+// #define SkGradFixedMinScalar nextafterf(SkFixed3232ToFloat(SkFixed3232Min), 0)
+#define SkGradFixedMaxScalar      ( 2147483520.0f)
+#define SkGradFixedMinScalar      (-2147483520.0f)
+#define SkScalarPinToGradFixed(x) SkScalarToFixed3232(SkTPin(x,                   \
+                                                             SkGradFixedMinScalar,\
+                                                             SkGradFixedMaxScalar))
 #define SkFixedToGradFixed(x)     SkFixedToFixed3232(x)
 #define SkGradFixedToFixed(x)     (SkFixed)((x) >> 16)
 #define kFracMax_SkGradFixed      0xFFFFFFFFLL