From 03f92c4d601493b703e7d930f77d4eb4bf1409e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 7 Sep 2017 13:46:33 +0200 Subject: [PATCH] do not pass a border halfedge to border_node --- .../internal/subdivision_hosts_impl_3.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Subdivision_method_3/include/CGAL/Subdivision_method_3/internal/subdivision_hosts_impl_3.h b/Subdivision_method_3/include/CGAL/Subdivision_method_3/internal/subdivision_hosts_impl_3.h index 6fe0a659fdd..08e886e939b 100644 --- a/Subdivision_method_3/include/CGAL/Subdivision_method_3/internal/subdivision_hosts_impl_3.h +++ b/Subdivision_method_3/include/CGAL/Subdivision_method_3/internal/subdivision_hosts_impl_3.h @@ -97,9 +97,11 @@ void PQQ_1step(Poly& p, VertexPointMap vpm, Mask mask) { std::size_t i = 0; BOOST_FOREACH(edge_descriptor ed, edges(p)){ if(is_border(ed,p)){ - int v = v_index[target(ed,p)]; + halfedge_descriptor h=halfedge(ed,p); + if (is_border(h,p)) h=opposite(h,p); + int v = v_index[target(h,p)]; v_onborder[v] = true; - mask.border_node(halfedge(ed,p), edge_point_buffer[i], vertex_point_buffer[v]); + mask.border_node(h, edge_point_buffer[i], vertex_point_buffer[v]); }else{ mask.edge_node(halfedge(ed,p), edge_point_buffer[i]); @@ -211,9 +213,11 @@ void PTQ_1step(Poly& p, VertexPointMap vpm, Mask mask) { if(! is_border(ed,p)){ mask.edge_node(halfedge(ed,p), edge_point_buffer[i]); } else{ - int v = v_index[target(ed,p)]; + halfedge_descriptor h = halfedge(ed,p); + if (is_border(h, p)) h = opposite(h,p); + int v = v_index[target(h,p)]; v_onborder[v] = true; - mask.border_node(halfedge(ed,p), edge_point_buffer[i], vertex_point_buffer[v]); + mask.border_node(h, edge_point_buffer[i], vertex_point_buffer[v]); } ++i; }