summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/mono/glue/arguments_vector.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/modules/mono/glue/arguments_vector.h b/modules/mono/glue/arguments_vector.h
index cb558235d8..8c0f308c15 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);
}
}
};