Explorar el Código

sparse_set: compare allocators before moving in the move operator assignment

Michele Caini hace 4 años
padre
commit
45ddcf0df9
Se han modificado 1 ficheros con 2 adiciones y 1 borrados
  1. 2 1
      src/entt/entity/sparse_set.hpp

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

@@ -338,10 +338,11 @@ public:
      * @return This sparse set.
      */
     basic_sparse_set &operator=(basic_sparse_set &&other) ENTT_NOEXCEPT {
+        ENTT_ASSERT(alloc_traits::is_always_equal::value || packed.get_allocator() == other.packed.get_allocator(), "Copying a sparse set is not allowed");
+
         release_sparse_pages();
         sparse = std::move(other.sparse);
         packed = std::move(other.packed);
-        ENTT_ASSERT(alloc_traits::is_always_equal::value || packed.get_allocator() == other.packed.get_allocator(), "Copying a sparse set is not allowed");
         udata = std::exchange(other.udata, nullptr);
         free_list = std::exchange(other.free_list, tombstone);
         mode = other.mode;