aboutsummaryrefslogtreecommitdiff
path: root/dep/recastnavigation/Detour/Source/DetourCommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dep/recastnavigation/Detour/Source/DetourCommon.cpp')
-rw-r--r--dep/recastnavigation/Detour/Source/DetourCommon.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/dep/recastnavigation/Detour/Source/DetourCommon.cpp b/dep/recastnavigation/Detour/Source/DetourCommon.cpp
index 3886f14b04d..e10e6276170 100644
--- a/dep/recastnavigation/Detour/Source/DetourCommon.cpp
+++ b/dep/recastnavigation/Detour/Source/DetourCommon.cpp
@@ -226,7 +226,15 @@ bool dtClosestHeightPointTriangle(const float* p, const float* a, const float* b
// If point lies inside the triangle, return interpolated ycoord.
if (u >= epsilon && v >= epsilon && (u+v) <= denom - epsilon) {
- h = a[1] + (v0[1]*u + v1[1]*v) / denom;
+
+ if (denom == 0.f && u == 0.f && v == 0.f)
+ h = a[1];
+ else
+ h = a[1] + (v0[1]*u + v1[1]*v) / denom;
+
+ if (!dtMathIsfinite(h))
+ return false;
+
return true;
}
return false;