summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/smallvec_type.hpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/core/smallvec_type.hpp b/src/core/smallvec_type.hpp
index 5e4e17365..832ba4792 100644
--- a/src/core/smallvec_type.hpp
+++ b/src/core/smallvec_type.hpp
@@ -76,16 +76,20 @@ public:
/**
* Append an item and return it.
+ * @param to_add the number of items to append
* @return pointer to newly allocated item
*/
- FORCEINLINE T *Append()
+ FORCEINLINE T *Append(size_t to_add = 1)
{
- if (this->items == this->capacity) {
- this->capacity += S;
+ size_t begin = this->items;
+ this->items += to_add;
+
+ if (this->items > this->capacity) {
+ this->capacity = Align(this->items, S);
this->data = ReallocT(this->data, this->capacity);
}
- return &this->data[this->items++];
+ return &this->data[begin];
}
/**