From 7cd8369ab2100d8d70cf113a6b8c00215d424bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Fri, 20 Nov 2015 12:15:03 +0100 Subject: [PATCH] Prevent division by zero --- AABB_tree/include/CGAL/AABB_traits.h | 2 -- .../CGAL/internal/AABB_tree/AABB_ray_intersection.h | 10 ++++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/AABB_tree/include/CGAL/AABB_traits.h b/AABB_tree/include/CGAL/AABB_traits.h index 84c8620118d..2005febfe71 100644 --- a/AABB_tree/include/CGAL/AABB_traits.h +++ b/AABB_tree/include/CGAL/AABB_traits.h @@ -160,8 +160,6 @@ struct AABB_traits_base_2{ return FT(0.); else return t_near; - return boost::none; - } } }; diff --git a/AABB_tree/include/CGAL/internal/AABB_tree/AABB_ray_intersection.h b/AABB_tree/include/CGAL/internal/AABB_tree/AABB_ray_intersection.h index a014810e2cf..04ddf1f2c05 100644 --- a/AABB_tree/include/CGAL/internal/AABB_tree/AABB_ray_intersection.h +++ b/AABB_tree/include/CGAL/internal/AABB_tree/AABB_ray_intersection.h @@ -171,8 +171,14 @@ private: FT operator()(const Point& point) { typename AABB_traits::Geom_traits::Vector_3 x(ray->source(), point); typename AABB_traits::Geom_traits::Vector_3 v = ray->to_vector(); - boost::array xv = {x[0] / v[0], x[1] / v[1], x[2] / v[2]}; - return *std::max_element(xv.begin(), xv.end()); + FT dist = 0; + + for(int i = 0; i < 3; ++i) { + if(v[0] != 0) { + dist = std::max(dist, x[0] / v[0]); + } + } + return dist; } const Ray* ray;