Browse Source

Fix clearing last buffer

af/UniformUnmanagedMemoryPoolMemoryAllocator-02-MemoryGuards
Anton Firszov 5 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++) for (int i = 0; i < pooledBuffers.Length - 1; i++)
{ {
pooledBuffers[i].AssignedToNewOwner(); 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)) 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; return result;
} }

Loading…
Cancel
Save