FIX: crash when slicing(make perimeters)

Udesk: https://bblcs.s5.udesk.cn/entry/ticket/show/2193141
Change-Id: Ibb2e20e9e6d159821e96dc81fd4e384f773a39dc
This commit is contained in:
zhimin.zeng 2023-05-16 12:04:50 +08:00 committed by Lane.Wei
parent 55a1141e67
commit 297e922daf

View file

@ -782,6 +782,9 @@ void annotate_inside_outside(VD &vd, const Lines &lines)
for (const VD::edge_type &edge : vd.edges()) for (const VD::edge_type &edge : vd.edges())
if (edge.vertex1() == nullptr) { if (edge.vertex1() == nullptr) {
if (edge.vertex0() == nullptr)
continue;
// Infinite Voronoi edge separating two Point sites or a Point site and a Segment site. // Infinite Voronoi edge separating two Point sites or a Point site and a Segment site.
// Infinite edge is always outside and it references at least one valid vertex. // Infinite edge is always outside and it references at least one valid vertex.
assert(edge.is_infinite()); assert(edge.is_infinite());
@ -888,6 +891,9 @@ void annotate_inside_outside(VD &vd, const Lines &lines)
for (const VD::edge_type &edge : vd.edges()) { for (const VD::edge_type &edge : vd.edges()) {
assert((edge_category(edge) == EdgeCategory::Unknown) == (edge_category(edge.twin()) == EdgeCategory::Unknown)); assert((edge_category(edge) == EdgeCategory::Unknown) == (edge_category(edge.twin()) == EdgeCategory::Unknown));
if (edge_category(edge) == EdgeCategory::Unknown) { if (edge_category(edge) == EdgeCategory::Unknown) {
if (!edge.is_finite())
continue;
assert(edge.is_finite()); assert(edge.is_finite());
const VD::cell_type &cell = *edge.cell(); const VD::cell_type &cell = *edge.cell();
const VD::cell_type &cell2 = *edge.twin()->cell(); const VD::cell_type &cell2 = *edge.twin()->cell();