public static unsafe AtkResNode **CopyNodeList(AtkResNode **originalList, ushort originalSize, ushort newSize = 0) { if (newSize <= originalSize) { newSize = (ushort)(originalSize + 1); } var oldListPtr = new IntPtr(originalList); var newListPtr = Common.Alloc((ulong)((newSize + 1) * 8)); var clone = new IntPtr[originalSize]; Marshal.Copy(oldListPtr, clone, 0, originalSize); Marshal.Copy(clone, 0, newListPtr, originalSize); return((AtkResNode **)(newListPtr)); }
private static AtkResNode **ExpandNodeList(AtkResNode **originalList, ushort originalSize, ushort newSize = 0) { if (newSize <= originalSize) { newSize = (ushort)(originalSize + 1); } var oldListPtr = new IntPtr(originalList); var newListPtr = Alloc((ulong)((newSize + 1) * 8)); var clone = new IntPtr[originalSize]; Marshal.Copy(oldListPtr, clone, 0, originalSize); Marshal.Copy(clone, 0, newListPtr, originalSize); return((AtkResNode **)(newListPtr)); }