summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/smallvec_type.hpp12
-rw-r--r--src/newgrf_sound.cpp2
2 files changed, 9 insertions, 5 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];
}
/**
diff --git a/src/newgrf_sound.cpp b/src/newgrf_sound.cpp
index a386f5b58..48623647e 100644
--- a/src/newgrf_sound.cpp
+++ b/src/newgrf_sound.cpp
@@ -18,7 +18,7 @@
#include "sound_func.h"
#include "core/mem_func.hpp"
-static SmallVector<SoundEntry, ORIGINAL_SAMPLE_COUNT> _sounds;
+static SmallVector<SoundEntry, 8> _sounds;
/* Allocate a new Sound */