Browse Source

Fix memory leak introduced in bb6814a

(cherry picked from commit 0338e55a6ebaed0b2116c8dde6c5ec56b8774f6d)
Ignacio Etcheverry 6 years ago
parent
commit
9b65bd18bc
1 changed files with 11 additions and 3 deletions
  1. 11 3
      modules/mono/glue/arguments_vector.h

+ 11 - 3
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);
 		}
 	}
 };