sparse_set: compare allocators before moving in the move operator assignment

This commit is contained in:
Michele Caini
2021-09-26 11:08:22 +02:00
parent 9c4d7a286f
commit 45ddcf0df9

View File

@@ -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;