Procházet zdrojové kódy

dispatcher: extra allocator check when moving

Michele Caini před 3 roky
rodič
revize
c639130c1e
1 změnil soubory, kde provedl 5 přidání a 1 odebrání
  1. 5 1
      src/entt/signal/dispatcher.hpp

+ 5 - 1
src/entt/signal/dispatcher.hpp

@@ -179,7 +179,9 @@ public:
      * @param allocator The allocator to use.
      */
     basic_dispatcher(basic_dispatcher &&other, const allocator_type &allocator) noexcept
-        : pools{container_type{std::move(other.pools.first()), allocator}, allocator} {}
+        : pools{container_type{std::move(other.pools.first()), allocator}, allocator} {
+        ENTT_ASSERT(alloc_traits::is_always_equal::value || pools.second() == other.pools.second(), "Copying a dispatcher is not allowed");
+    }
 
     /**
      * @brief Move assignment operator.
@@ -187,6 +189,8 @@ public:
      * @return This dispatcher.
      */
     basic_dispatcher &operator=(basic_dispatcher &&other) noexcept {
+        ENTT_ASSERT(alloc_traits::is_always_equal::value || pools.second() == other.pools.second(), "Copying a dispatcher is not allowed");
+
         pools = std::move(other.pools);
         return *this;
     }