diff --git a/src/Exo/Core/Exo.Memory/MemoryMappedFileMemoryManager.cs b/src/Exo/Core/Exo.Memory/MemoryMappedFileMemoryManager.cs index 039f629..35c0316 100644 --- a/src/Exo/Core/Exo.Memory/MemoryMappedFileMemoryManager.cs +++ b/src/Exo/Core/Exo.Memory/MemoryMappedFileMemoryManager.cs @@ -31,9 +31,10 @@ protected override void Dispose(bool disposing) public override MemoryHandle Pin(int elementIndex = 0) { + ArgumentOutOfRangeException.ThrowIfGreaterThan((uint)elementIndex, (uint)_length, nameof(elementIndex)); byte* pointer = null; _viewHandle.AcquirePointer(ref pointer); - return new MemoryHandle(pointer, pinnable: this); + return new MemoryHandle(pointer + (uint)elementIndex, pinnable: this); } public override void Unpin() => _viewHandle.ReleasePointer();