Browse Source

Explicitly control lifetime of memory owner

pull/1918/head
Ynse Hoornenborg 5 years ago
parent
commit
c05fd216d1
  1. 5
      src/ImageSharp/Formats/Png/PngEncoderCore.cs

5
src/ImageSharp/Formats/Png/PngEncoderCore.cs

@ -680,13 +680,16 @@ namespace SixLabors.ImageSharp.Formats.Png
return; return;
} }
using IMemoryOwner<byte> owner = this.memoryAllocator.Allocate<byte>(xmpData.Length + PngConstants.XmpKeyword.Length + 5); int payloadLength = xmpData.Length + PngConstants.XmpKeyword.Length + 5;
using (IMemoryOwner<byte> owner = this.memoryAllocator.Allocate<byte>(payloadLength))
{
Span<byte> payload = owner.GetSpan(); Span<byte> payload = owner.GetSpan();
PngConstants.XmpKeyword.CopyTo(payload); PngConstants.XmpKeyword.CopyTo(payload);
int bytesWritten = PngConstants.XmpKeyword.Length + iTxtHeaderSize; int bytesWritten = PngConstants.XmpKeyword.Length + iTxtHeaderSize;
xmpData.CopyTo(payload.Slice(bytesWritten)); xmpData.CopyTo(payload.Slice(bytesWritten));
this.WriteChunk(stream, PngChunkType.InternationalText, payload); this.WriteChunk(stream, PngChunkType.InternationalText, payload);
} }
}
/// <summary> /// <summary>
/// Writes a text chunk to the stream. Can be either a tTXt, iTXt or zTXt chunk, /// Writes a text chunk to the stream. Can be either a tTXt, iTXt or zTXt chunk,

Loading…
Cancel
Save