Index: src/core/SkPathRef.cpp |
diff --git a/src/core/SkPathRef.cpp b/src/core/SkPathRef.cpp |
index e5efefcceb7c8b319efe065a5aa7ee9db17d8be6..844c40a505b1df9e20daa737f121bd60537f7c98 100644 |
--- a/src/core/SkPathRef.cpp |
+++ b/src/core/SkPathRef.cpp |
@@ -677,6 +677,9 @@ uint8_t SkPathRef::Iter::peek() const { |
} |
#ifdef SK_DEBUG |
+ |
+#include "SkNx.h" |
+ |
void SkPathRef::validate() const { |
SkASSERT(static_cast<ptrdiff_t>(fFreeSpace) >= 0); |
SkASSERT(reinterpret_cast<intptr_t>(fVerbs) - reinterpret_cast<intptr_t>(fPoints) >= 0); |
@@ -700,11 +703,13 @@ void SkPathRef::validate() const { |
if (!fBoundsIsDirty && !fBounds.isEmpty()) { |
bool isFinite = true; |
+ Sk2s leftTop = Sk2s(fBounds.fLeft, fBounds.fTop); |
+ Sk2s rightBot = Sk2s(fBounds.fRight, fBounds.fBottom); |
for (int i = 0; i < fPointCnt; ++i) { |
+ Sk2s point = Sk2s(fPoints[i].fX, fPoints[i].fY); |
#ifdef SK_DEBUG |
if (fPoints[i].isFinite() && |
- (fPoints[i].fX < fBounds.fLeft || fPoints[i].fX > fBounds.fRight || |
- fPoints[i].fY < fBounds.fTop || fPoints[i].fY > fBounds.fBottom)) { |
+ ((point < leftTop).anyTrue() || (point > rightBot).anyTrue())) { |
SkDebugf("bounds: %f %f %f %f\n", |
fBounds.fLeft, fBounds.fTop, fBounds.fRight, fBounds.fBottom); |
for (int j = 0; j < fPointCnt; ++j) { |
@@ -717,8 +722,7 @@ void SkPathRef::validate() const { |
#endif |
SkASSERT(!fPoints[i].isFinite() || |
- (fPoints[i].fX >= fBounds.fLeft && fPoints[i].fX <= fBounds.fRight && |
- fPoints[i].fY >= fBounds.fTop && fPoints[i].fY <= fBounds.fBottom)); |
+ (!(point < leftTop).anyTrue() && !(point > rightBot).anyTrue())); |
if (!fPoints[i].isFinite()) { |
isFinite = false; |
} |