From f4510132fceaa8266d0769d3567160f600577f1f Mon Sep 17 00:00:00 2001 From: Ynse Hoornenborg Date: Mon, 3 Jan 2022 20:34:17 +0100 Subject: [PATCH] Use memory allocator in Gif encoder --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 4c2ef4647..fd1556eb3 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -427,11 +427,13 @@ namespace SixLabors.ImageSharp.Formats.Gif private void WriteExtension(TGifExtension extension, Stream stream) where TGifExtension : struct, IGifExtension { - byte[] buffer; + IMemoryOwner owner = null; + Span buffer; int extensionSize = extension.ContentLength; if (extensionSize > this.buffer.Length - 3) { - buffer = new byte[extensionSize + 3]; + owner = this.memoryAllocator.Allocate(extensionSize + 3); + buffer = owner.GetSpan(); } else { @@ -441,11 +443,12 @@ namespace SixLabors.ImageSharp.Formats.Gif buffer[0] = GifConstants.ExtensionIntroducer; buffer[1] = extension.Label; - extension.WriteTo(buffer.AsSpan(2)); + extension.WriteTo(buffer.Slice(2)); buffer[extensionSize + 2] = GifConstants.Terminator; stream.Write(buffer, 0, extensionSize + 3); + owner?.Dispose(); } ///