Просмотр исходного кода

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

Michele Caini 4 лет назад
Родитель
Сommit
d3496f3ff5
1 измененных файлов с 1 добавлено и 1 удалено
  1. 1 1
      src/entt/entity/sparse_set.hpp

+ 1 - 1
src/entt/entity/sparse_set.hpp

@@ -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) {