static void OverRelease(OwnedBuffer <byte> buffer) { Assert.ThrowsAny <InvalidOperationException>(() => { buffer.Release(); }); }
static void MemoryHandleDoubleFree(OwnedBuffer <byte> buffer) { var memory = buffer.Buffer; var handle = memory.Retain(pin: true); buffer.Retain(); handle.Dispose(); handle.Dispose(); Assert.False(buffer.Release()); }
public void Dispose() { Debug.Assert(_owned.HasOutstandingReferences); _owned.Release(); if (!_owned.HasOutstandingReferences) { _owned.Dispose(); } }
public void Dispose() { Debug.Assert(_owned.IsRetained); _owned.Release(); if (!_owned.IsRetained) { _owned.Dispose(); } }
static void MemoryHandleDoubleFree(OwnedBuffer <byte> buffer) { var memory = buffer.Buffer; var h = memory.Pin(); Assert.True(buffer.IsRetained); buffer.Retain(); Assert.True(buffer.IsRetained); h.Dispose(); Assert.True(buffer.IsRetained); h.Dispose(); Assert.True(buffer.IsRetained); buffer.Release(); Assert.False(buffer.IsRetained); }
public void MemoryHandleDoubleFree() { var array = new byte[1024]; OwnedBuffer <byte> owned = array; var memory = owned.Buffer; var h = memory.Pin(); Assert.True(owned.HasOutstandingReferences); owned.AddReference(); Assert.True(owned.HasOutstandingReferences); h.Free(); Assert.True(owned.HasOutstandingReferences); h.Free(); Assert.True(owned.HasOutstandingReferences); owned.Release(); Assert.False(owned.HasOutstandingReferences); }
public void MemoryHandleDoubleFree() { var array = new byte[1024]; OwnedBuffer <byte> owned = array; var memory = owned.Buffer; var h = memory.Pin(); Assert.True(owned.IsRetained); owned.Retain(); Assert.True(owned.IsRetained); h.Dispose(); Assert.True(owned.IsRetained); h.Dispose(); Assert.True(owned.IsRetained); owned.Release(); Assert.False(owned.IsRetained); }
public void ReleasedBlockWorks() { using (var pool = new MemoryPool()) { var block1 = pool.Rent(1); block1.Retain(); block1.Release(); OwnedBuffer <byte> block2 = null; // Lease-return until we get same block while (block1 != block2) { block2 = pool.Rent(1); block2.Retain(); block2.Release(); } Assert.True(block2.AsSpan().Length > 0); } }
public void Dispose() { _owned.Release(); }
protected override void Dispose(bool disposing) { _rentedBuffer.Release(); //_rentedBuffer.Dispose(); base.Dispose(disposing); }