mirror of https://github.com/CGAL/cgal
Fix a use-after-free
In an `unordered_map`, any insertion can invalidate iterators, when the load factor triggers a rehashing.
This commit is contained in:
parent
54a992ff9f
commit
f438a2ed3a
|
|
@ -5170,6 +5170,7 @@ remove_3D(Vertex_handle v, VertexRemover& remover)
|
||||||
}
|
}
|
||||||
|
|
||||||
typename Vertex_triple_Facet_map::value_type o_vt_f_pair = *oit;
|
typename Vertex_triple_Facet_map::value_type o_vt_f_pair = *oit;
|
||||||
|
outer_map.erase(oit);
|
||||||
Cell_handle o_ch = o_vt_f_pair.second.first;
|
Cell_handle o_ch = o_vt_f_pair.second.first;
|
||||||
unsigned int o_i = o_vt_f_pair.second.second;
|
unsigned int o_i = o_vt_f_pair.second.second;
|
||||||
|
|
||||||
|
|
@ -5215,7 +5216,6 @@ remove_3D(Vertex_handle v, VertexRemover& remover)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
outer_map.erase(oit);
|
|
||||||
}
|
}
|
||||||
tds().delete_vertex(v);
|
tds().delete_vertex(v);
|
||||||
tds().delete_cells(hole.begin(), hole.end());
|
tds().delete_cells(hole.begin(), hole.end());
|
||||||
|
|
@ -6059,6 +6059,7 @@ move_if_no_collision(Vertex_handle v, const Point& p,
|
||||||
}
|
}
|
||||||
|
|
||||||
typename Vertex_triple_Facet_map::value_type o_vt_f_pair = *oit;
|
typename Vertex_triple_Facet_map::value_type o_vt_f_pair = *oit;
|
||||||
|
outer_map.erase(oit);
|
||||||
Cell_handle o_ch = o_vt_f_pair.second.first;
|
Cell_handle o_ch = o_vt_f_pair.second.first;
|
||||||
unsigned int o_i = o_vt_f_pair.second.second;
|
unsigned int o_i = o_vt_f_pair.second.second;
|
||||||
|
|
||||||
|
|
@ -6105,7 +6106,6 @@ move_if_no_collision(Vertex_handle v, const Point& p,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
outer_map.erase(oit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fixing pointer
|
// fixing pointer
|
||||||
|
|
@ -6511,6 +6511,7 @@ move_if_no_collision_and_give_new_cells(Vertex_handle v, const Point& p,
|
||||||
}
|
}
|
||||||
|
|
||||||
typename Vertex_triple_Facet_map::value_type o_vt_f_pair = *oit;
|
typename Vertex_triple_Facet_map::value_type o_vt_f_pair = *oit;
|
||||||
|
outer_map.erase(oit);
|
||||||
Cell_handle o_ch = o_vt_f_pair.second.first;
|
Cell_handle o_ch = o_vt_f_pair.second.first;
|
||||||
unsigned int o_i = o_vt_f_pair.second.second;
|
unsigned int o_i = o_vt_f_pair.second.second;
|
||||||
|
|
||||||
|
|
@ -6558,7 +6559,6 @@ move_if_no_collision_and_give_new_cells(Vertex_handle v, const Point& p,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
outer_map.erase(oit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fixing pointer
|
// fixing pointer
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue