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 /> /// <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>(); int itemSizeBytes = Unsafe.SizeOf<T>();
if (this.minSizeBytes > 0 && itemSize < this.minSizeBytes * itemSize) 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); byte[] byteBuffer = this.pool.Rent(bufferSizeInBytes);
var buffer = new Buffer<T>(Unsafe.As<T[]>(byteBuffer), itemSize, this); var buffer = new Buffer<T>(Unsafe.As<T[]>(byteBuffer), itemCount, this);
if (clear) if (clear)
{ {
buffer.Clear(); buffer.Clear();

Loading…
Cancel
Save