Index: cc/stubs/skia_utils.h |
diff --git a/cc/stubs/skia_utils.h b/cc/stubs/skia_utils.h |
index d7b1fbfb03e533f82bed9d1739540164573c79e7..8404fa322ced67ca195f15b50dae9af6a2aed21e 100644 |
--- a/cc/stubs/skia_utils.h |
+++ b/cc/stubs/skia_utils.h |
@@ -5,11 +5,23 @@ |
#ifndef CC_STUBS_SKIAUTILS_H_ |
#define CC_STUBS_SKIAUTILS_H_ |
+#include <limits> |
+ |
+#include "third_party/skia/include/core/SkScalar.h" |
+ |
namespace cc { |
+// Skia has problems when passed infinite, etc floats, filter them to 0. |
inline SkScalar FloatToSkScalar(float f) |
{ |
- return SkFloatToScalar(isfinite(f) ? f : 0); |
+ // This checks if |f| is NaN. |
+ if (f != f) |
+ return 0; |
+ if (f == std::numeric_limits<double>::infinity()) |
+ return 0; |
+ if (f == -std::numeric_limits<double>::infinity()) |
+ return 0; |
+ return SkFloatToScalar(f); |
} |
} |