Browse Source

Fix bug in Pin() method, minor code tweaks

js/color-alpha-handling
Sergio Pedri 6 years ago
parent
commit
b9dc71d375
  1. 2
      src/ImageSharp/Memory/ByteMemoryManager{T}.cs
  2. 16
      tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs

2
src/ImageSharp/Memory/ByteMemoryManager{T}.cs

@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.Memory
/// <inheritdoc/> /// <inheritdoc/>
public override MemoryHandle Pin(int elementIndex = 0) public override MemoryHandle Pin(int elementIndex = 0)
{ {
return this.memory.Pin(); return this.memory.Slice(elementIndex).Pin();
} }
/// <inheritdoc/> /// <inheritdoc/>

16
tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs

@ -99,25 +99,13 @@ namespace SixLabors.ImageSharp.Tests
/// <inheritdoc/> /// <inheritdoc/>
public override Span<TTo> GetSpan() public override Span<TTo> GetSpan()
{ {
if (MemoryMarshal.TryGetArray(this.memory, out ArraySegment<TFrom> arraySegment)) return MemoryMarshal.Cast<TFrom, TTo>(this.memory.Span);
{
return MemoryMarshal.Cast<TFrom, TTo>(arraySegment.AsSpan());
}
if (MemoryMarshal.TryGetMemoryManager<TFrom, MemoryManager<TFrom>>(this.memory, out MemoryManager<TFrom> memoryManager))
{
return MemoryMarshal.Cast<TFrom, TTo>(memoryManager.GetSpan());
}
ThrowHelper.ThrowArgumentException("The input Memory<byte> instance was not valid.", nameof(this.memory));
return default;
} }
/// <inheritdoc/> /// <inheritdoc/>
public override MemoryHandle Pin(int elementIndex = 0) public override MemoryHandle Pin(int elementIndex = 0)
{ {
return this.memory.Pin(); return this.memory.Slice(elementIndex).Pin();
} }
/// <inheritdoc/> /// <inheritdoc/>

Loading…
Cancel
Save