sparse_set: apparently using an invalid iterator isn't a good idea :)

This commit is contained in:
Michele Caini
2022-01-26 14:18:59 +01:00
parent e97f7ee725
commit d3496f3ff5

View File

@@ -240,8 +240,8 @@ protected:
virtual void try_erase(basic_iterator it, const std::size_t count) {
if(mode == deletion_policy::in_place) {
for(const auto last = it + count; it != last; ++it) {
packed[it.index()] = std::exchange(free_list, entity_traits::combine(static_cast<typename entity_traits::entity_type>(it.index()), entity_traits::reserved));
sparse_ref(*it) = null;
packed[it.index()] = std::exchange(free_list, entity_traits::combine(static_cast<typename entity_traits::entity_type>(it.index()), entity_traits::reserved));
}
} else {
for(const auto last = it + count; it != last; ++it) {