From 45ddcf0df9e070191b4f8d1617ebc5d380f0ea12 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Sun, 26 Sep 2021 11:08:22 +0200 Subject: [PATCH] sparse_set: compare allocators before moving in the move operator assignment --- src/entt/entity/sparse_set.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/entt/entity/sparse_set.hpp b/src/entt/entity/sparse_set.hpp index a601df1ad..909b427e5 100644 --- a/src/entt/entity/sparse_set.hpp +++ b/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;