Fix memory leak introduced in bb6814a

(cherry picked from commit 0338e55a6e)
This commit is contained in:
Ignacio Etcheverry 2019-04-02 22:55:52 +02:00 committed by Hein-Pieter van Braam-Stewart
parent 4c10a322d1
commit 9b65bd18bc
1 changed files with 11 additions and 3 deletions

View File

@ -39,6 +39,7 @@ struct ArgumentsVector {
private: private:
T pool[POOL_SIZE]; T pool[POOL_SIZE];
T *_ptr; T *_ptr;
int size;
ArgumentsVector(); ArgumentsVector();
ArgumentsVector(const ArgumentsVector &); ArgumentsVector(const ArgumentsVector &);
@ -48,11 +49,18 @@ public:
T &get(int p_idx) { return _ptr[p_idx]; } T &get(int p_idx) { return _ptr[p_idx]; }
void set(int p_idx, const T &p_value) { _ptr[p_idx] = p_value; } void set(int p_idx, const T &p_value) { _ptr[p_idx] = p_value; }
explicit ArgumentsVector(int size) { explicit ArgumentsVector(int p_size) :
if (size <= POOL_SIZE) { size(p_size) {
if (p_size <= POOL_SIZE) {
_ptr = pool; _ptr = pool;
} else { } else {
_ptr = memnew_arr(T, size); _ptr = memnew_arr(T, p_size);
}
}
~ArgumentsVector() {
if (size > POOL_SIZE) {
memdelete_arr(_ptr);
} }
} }
}; };