From c05fd216d18b98a35fceaba1fa7078e6bf7b59cb Mon Sep 17 00:00:00 2001 From: Ynse Hoornenborg Date: Mon, 10 Jan 2022 04:26:04 +0100 Subject: [PATCH] Explicitly control lifetime of memory owner --- src/ImageSharp/Formats/Png/PngEncoderCore.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ImageSharp/Formats/Png/PngEncoderCore.cs b/src/ImageSharp/Formats/Png/PngEncoderCore.cs index a0f86fd33..c428f52e4 100644 --- a/src/ImageSharp/Formats/Png/PngEncoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngEncoderCore.cs @@ -680,12 +680,15 @@ namespace SixLabors.ImageSharp.Formats.Png return; } - using IMemoryOwner owner = this.memoryAllocator.Allocate(xmpData.Length + PngConstants.XmpKeyword.Length + 5); - Span payload = owner.GetSpan(); - PngConstants.XmpKeyword.CopyTo(payload); - int bytesWritten = PngConstants.XmpKeyword.Length + iTxtHeaderSize; - xmpData.CopyTo(payload.Slice(bytesWritten)); - this.WriteChunk(stream, PngChunkType.InternationalText, payload); + int payloadLength = xmpData.Length + PngConstants.XmpKeyword.Length + 5; + using (IMemoryOwner owner = this.memoryAllocator.Allocate(payloadLength)) + { + Span payload = owner.GetSpan(); + PngConstants.XmpKeyword.CopyTo(payload); + int bytesWritten = PngConstants.XmpKeyword.Length + iTxtHeaderSize; + xmpData.CopyTo(payload.Slice(bytesWritten)); + this.WriteChunk(stream, PngChunkType.InternationalText, payload); + } } ///