diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h index 797a6912f26..0bb232eb66b 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h @@ -1442,12 +1442,20 @@ triangulate_hole_polyline_with_cdt(const PointRange& points, vertices[v->info()] = v; } - for (std::size_t i = 0; i < size; ++i) { - const std::size_t ip = (i + 1) % size; - if (vertices[i] != vertices[ip]) { - cdt.insert_constraint(vertices[i], vertices[ip]); + try + { + for (std::size_t i = 0; i < size; ++i) { + const std::size_t ip = (i + 1) % size; + if (vertices[i] != vertices[ip]) { + cdt.insert_constraint(vertices[i], vertices[ip]); + } } } + catch(const typename CDT::Intersection_of_constraints_exception&) + { + visitor.end_planar_phase(false); + return false; + } // Mark external faces. for (typename CDT::All_faces_iterator fit = cdt.all_faces_begin(),