From 9b65bd18bc3042073f96c67d26a5fbdd43c7999b Mon Sep 17 00:00:00 2001 From: Ignacio Etcheverry Date: Tue, 2 Apr 2019 22:55:52 +0200 Subject: [PATCH] Fix memory leak introduced in bb6814a (cherry picked from commit 0338e55a6ebaed0b2116c8dde6c5ec56b8774f6d) --- modules/mono/glue/arguments_vector.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/mono/glue/arguments_vector.h b/modules/mono/glue/arguments_vector.h index cb558235d81..8c0f308c15a 100644 --- a/modules/mono/glue/arguments_vector.h +++ b/modules/mono/glue/arguments_vector.h @@ -39,6 +39,7 @@ struct ArgumentsVector { private: T pool[POOL_SIZE]; T *_ptr; + int size; ArgumentsVector(); ArgumentsVector(const ArgumentsVector &); @@ -48,11 +49,18 @@ public: T &get(int p_idx) { return _ptr[p_idx]; } void set(int p_idx, const T &p_value) { _ptr[p_idx] = p_value; } - explicit ArgumentsVector(int size) { - if (size <= POOL_SIZE) { + explicit ArgumentsVector(int p_size) : + size(p_size) { + if (p_size <= POOL_SIZE) { _ptr = pool; } else { - _ptr = memnew_arr(T, size); + _ptr = memnew_arr(T, p_size); + } + } + + ~ArgumentsVector() { + if (size > POOL_SIZE) { + memdelete_arr(_ptr); } } };