diff --git a/Triangulation_3/include/CGAL/Triangulation_3/internal/Triangulation_segment_traverser_3_impl.h b/Triangulation_3/include/CGAL/Triangulation_3/internal/Triangulation_segment_traverser_3_impl.h
index f5e6c7016a8..2f75230ebbd 100644
--- a/Triangulation_3/include/CGAL/Triangulation_3/internal/Triangulation_segment_traverser_3_impl.h
+++ b/Triangulation_3/include/CGAL/Triangulation_3/internal/Triangulation_segment_traverser_3_impl.h
@@ -505,9 +505,15 @@ Triangulation_segment_cell_iterator_3
::walk_to_next_3(const Simplex& pre
continue;
}
const Point* const backup_vert_li = std::exchange(vert[li], &_target);
-
+ bool op_li_is_null = false;
+ if(_t_vertex != Vertex_handle()) {
+ for(int i = 0; i < 4; ++i) {
+ if(li == i) continue;
+ if(cur_cell->vertex(i) == _t_vertex) op_li_is_null = true;
+ }
+ }
// Check if the target is on the opposite side of the supporting plane.
- op[li] = _tr->orientation(*vert[0], *vert[1], *vert[2], *vert[3]);
+ op[li] = op_li_is_null ? ZERO : _tr->orientation(*vert[0], *vert[1], *vert[2], *vert[3]);
if(op[li] == POSITIVE)
pos += li;
if(op[li] != NEGATIVE) {