From f2bac04e4303e0472f719830541d9c6c53de3e6a Mon Sep 17 00:00:00 2001 From: pharan Date: Thu, 19 Oct 2017 16:17:18 +0800 Subject: [PATCH] [csharp] Resize better if T is a class. --- spine-csharp/src/ExposedList.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/spine-csharp/src/ExposedList.cs b/spine-csharp/src/ExposedList.cs index c2c7de4d9..ba3bfbdce 100644 --- a/spine-csharp/src/ExposedList.cs +++ b/spine-csharp/src/ExposedList.cs @@ -90,7 +90,18 @@ namespace Spine { } public ExposedList Resize (int newSize) { - if (newSize > Items.Length) Array.Resize(ref Items, newSize); + int itemsLength = Items.Length; + var oldItems = Items; + if (newSize > itemsLength) { + Array.Resize(ref Items, newSize); +// var newItems = new T[newSize]; +// Array.Copy(oldItems, newItems, Count); +// Items = newItems; + } else if (newSize > itemsLength) { + // Allow nulling of T reference type to allow GC. + for (int i = Count; i < itemsLength; i++) + oldItems[i] = default(T); + } Count = newSize; return this; }