diff --git a/source/blender/blenlib/BLI_map.hh b/source/blender/blenlib/BLI_map.hh index 3cbb81b5c7d..d76aa46502d 100644 --- a/source/blender/blenlib/BLI_map.hh +++ b/source/blender/blenlib/BLI_map.hh @@ -962,7 +962,13 @@ class Map { */ void clear() { - this->noexcept_reset(); + for (Slot &slot : slots_) { + slot.~Slot(); + new (&slot) Slot(); + } + + removed_slots_ = 0; + occupied_and_removed_slots_ = 0; } /** diff --git a/source/blender/blenlib/BLI_set.hh b/source/blender/blenlib/BLI_set.hh index bf177802c97..391d31c2228 100644 --- a/source/blender/blenlib/BLI_set.hh +++ b/source/blender/blenlib/BLI_set.hh @@ -515,8 +515,13 @@ class Set { */ void clear() { - this->~Set(); - new (this) Set(); + for (Slot &slot : slots_) { + slot.~Slot(); + new (&slot) Slot(); + } + + removed_slots_ = 0; + occupied_and_removed_slots_ = 0; } /** diff --git a/source/blender/blenlib/BLI_vector_set.hh b/source/blender/blenlib/BLI_vector_set.hh index 23284fd94bc..4ae1bf9000d 100644 --- a/source/blender/blenlib/BLI_vector_set.hh +++ b/source/blender/blenlib/BLI_vector_set.hh @@ -531,7 +531,14 @@ class VectorSet { */ void clear() { - this->noexcept_reset(); + destruct_n(keys_, this->size()); + for (Slot &slot : slots_) { + slot.~Slot(); + new (&slot) Slot(); + } + + removed_slots_ = 0; + occupied_and_removed_slots_ = 0; } /**