From e8f1f2b9dcaaf245544b47bf17a3879170b32847 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 14 Mar 2023 12:01:12 +0100 Subject: [PATCH] Triangulation_2: Fix copy of CDT_plus_2 --- .../Polyline_constraint_hierarchy_2.h | 2 +- .../test/Triangulation_2/issue_7328.cpp | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 Triangulation_2/test/Triangulation_2/issue_7328.cpp diff --git a/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h b/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h index 130b2a181de..221d6159f9e 100644 --- a/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h +++ b/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h @@ -332,7 +332,7 @@ copy(const Polyline_constraint_hierarchy_2& ch1, std::mapskip_begin(), end = hvl1->skip_end(); - for( ; vit != end; ++vit) hvl2->push_back(Node(vmap[*vit])); + for( ; vit != end; ++vit) hvl2->push_back(Node(vmap[*vit], vit.input())); constraint_set.insert(hvl2); } // copy sc_to_c_map diff --git a/Triangulation_2/test/Triangulation_2/issue_7328.cpp b/Triangulation_2/test/Triangulation_2/issue_7328.cpp new file mode 100644 index 00000000000..842145402fc --- /dev/null +++ b/Triangulation_2/test/Triangulation_2/issue_7328.cpp @@ -0,0 +1,28 @@ +#include +#include +#include + +typedef CGAL::Exact_predicates_exact_constructions_kernel EPECK; + +typedef CGAL::Exact_intersections_tag Itag; +typedef CGAL::Constrained_Delaunay_triangulation_2 CDT; +typedef CGAL::Constrained_triangulation_plus_2 CDTplus; +typedef CDT::Vertex_handle Vertex_handle; + +int main() { + CDTplus cdt; + std::vector vertices; + vertices.push_back(cdt.insert(EPECK::Point_2(0.867732088229836496, -1.098635766973843797))); + vertices.push_back(cdt.insert(EPECK::Point_2(0.868834588233415861, -1.100000000000000533))); + vertices.push_back(cdt.insert(EPECK::Point_2(0.729063637498132522, -0.927047486193771419))); + vertices.push_back(cdt.insert(EPECK::Point_2(0.760857518227448626, -0.918203415668045420))); + + cdt.insert_constraint(vertices[0], vertices[2]); + cdt.insert_constraint(vertices[0], vertices[3]); + + CDTplus cdtC = cdt; + + EPECK::Point_2 p(0.868834588233415861, -1.100000000000000533), q(0.729063637498132522, -0.927047486193771419); + cdtC.insert_constraint(p,q); + return 0; +}