Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2021-04-28 11:27:49 +0300
committerJacques Lucke <jacques@blender.org>2021-04-28 11:27:49 +0300
commitd71f96073f090072bbcd9ac3d489c6ed58389574 (patch)
treee45882111dede09cdb80535bc6db3b283c8c1449 /source/blender/blenlib
parent8a41a12c71dd9b4ab0df23219929da4541780b7f (diff)
BLI: improve Vector.remove_and_reorder
The old version was correct as well but did a move even when not necessary.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/BLI_vector.hh9
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/blenlib/BLI_vector.hh b/source/blender/blenlib/BLI_vector.hh
index 3a2f284a63b..8bea2584ca7 100644
--- a/source/blender/blenlib/BLI_vector.hh
+++ b/source/blender/blenlib/BLI_vector.hh
@@ -740,11 +740,12 @@ class Vector {
BLI_assert(index >= 0);
BLI_assert(index < this->size());
T *element_to_remove = begin_ + index;
- if (element_to_remove < end_) {
- *element_to_remove = std::move(*(end_ - 1));
+ T *last_element = end_ - 1;
+ if (element_to_remove < last_element) {
+ *element_to_remove = std::move(*last_element);
}
- end_--;
- end_->~T();
+ end_ = last_element;
+ last_element->~T();
UPDATE_VECTOR_SIZE(this);
}