Browse Source

- Oops. Note to self: don't make changes to unsafe

code just before going to sleep
af/merge-core
Lauri Kotilainen 8 years ago
parent
commit
29937e17ae
  1. 14
      src/ImageSharp/Memory/ArrayPoolMemoryManager.cs

14
src/ImageSharp/Memory/ArrayPoolMemoryManager.cs

@ -30,16 +30,18 @@ namespace SixLabors.ImageSharp.Memory
}
/// <inheritdoc />
internal override Buffer<T> Allocate<T>(int size, bool clear = false)
internal override Buffer<T> Allocate<T>(int itemCount, bool clear = false)
{
int itemSize = Unsafe.SizeOf<T>();
if (this.minSizeBytes > 0 && itemSize < this.minSizeBytes * itemSize)
int itemSizeBytes = Unsafe.SizeOf<T>();
int bufferSizeInBytes = itemCount * itemSizeBytes;
if (this.minSizeBytes > 0 && bufferSizeInBytes < this.minSizeBytes)
{
return new Buffer<T>(new T[itemSize], itemSize);
return new Buffer<T>(new T[itemCount], itemCount);
}
byte[] byteBuffer = this.pool.Rent(itemSize * itemSize);
var buffer = new Buffer<T>(Unsafe.As<T[]>(byteBuffer), itemSize, this);
byte[] byteBuffer = this.pool.Rent(bufferSizeInBytes);
var buffer = new Buffer<T>(Unsafe.As<T[]>(byteBuffer), itemCount, this);
if (clear)
{
buffer.Clear();

Loading…
Cancel
Save