summaryrefslogtreecommitdiff
path: root/indra/llmath
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-04-15 20:15:40 +0100
committerTofu Linden <tofu.linden@lindenlab.com>2010-04-15 20:15:40 +0100
commitbba063c0c19d121cbecaecee92c0894c5b83eb2b (patch)
treeca8eed1f725e1c24bc38b783c250d72e5018fdc0 /indra/llmath
parent384c954fb7f6fef583998f87968c01a831911a49 (diff)
EXT-4388 Crash in octree line segment intersection code (getMask)
Add yet more paranoia-and-return-or-assert, this time for +-INF in input vector. To be reviewed by Bao.
Diffstat (limited to 'indra/llmath')
-rw-r--r--indra/llmath/v2math.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/indra/llmath/v2math.h b/indra/llmath/v2math.h
index 9fef8851cc..65f3714313 100644
--- a/indra/llmath/v2math.h
+++ b/indra/llmath/v2math.h
@@ -70,6 +70,8 @@ class LLVector2
void setVec(const LLVector2 &vec); // deprecated
void setVec(const F32 *vec); // deprecated
+ inline bool isFinite() const; // checks to see if all values of LLVector2 are finite
+
F32 length() const; // Returns magnitude of LLVector2
F32 lengthSquared() const; // Returns magnitude squared of LLVector2
F32 normalize(); // Normalizes and returns the magnitude of LLVector2
@@ -215,6 +217,7 @@ inline void LLVector2::setVec(const F32 *vec)
mV[VY] = vec[VY];
}
+
// LLVector2 Magnitude and Normalization Functions
inline F32 LLVector2::length(void) const
@@ -247,6 +250,12 @@ inline F32 LLVector2::normalize(void)
return (mag);
}
+// checker
+inline bool LLVector2::isFinite() const
+{
+ return (llfinite(mV[VX]) && llfinite(mV[VY]));
+}
+
// deprecated
inline F32 LLVector2::magVec(void) const
{