Browse Source

Fix clearing last buffer

af/UniformUnmanagedMemoryPoolMemoryAllocator-02-MemoryGuards
Anton Firszov 4 years ago
parent
commit
7a1ec9d8d8
  1. 14
      src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.Owned.cs

14
src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.Owned.cs

@ -73,14 +73,22 @@ namespace SixLabors.ImageSharp.Memory
for (int i = 0; i < pooledBuffers.Length - 1; i++)
{
pooledBuffers[i].AssignedToNewOwner();
result[i] = new UniformUnmanagedMemoryPool.Buffer<T>(pool, pooledBuffers[i], bufferLength);
var currentBuffer = new UniformUnmanagedMemoryPool.Buffer<T>(pool, pooledBuffers[i], bufferLength);
if (options.Has(AllocationOptions.Clean))
{
result[i].Clear();
currentBuffer.Clear();
}
result[i] = currentBuffer;
}
var lastBuffer = new UniformUnmanagedMemoryPool.Buffer<T>(pool, pooledBuffers[pooledBuffers.Length - 1], sizeOfLastBuffer);
if (options.Has(AllocationOptions.Clean))
{
lastBuffer.Clear();
}
result[result.Length - 1] = new UniformUnmanagedMemoryPool.Buffer<T>(pool, pooledBuffers[pooledBuffers.Length - 1], sizeOfLastBuffer);
result[result.Length - 1] = lastBuffer;
return result;
}

Loading…
Cancel
Save