diff --git a/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs b/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs index 16b4c827ef..ead636f30c 100644 --- a/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs +++ b/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs @@ -349,10 +349,11 @@ internal class Vp8Encoder : IDisposable int alphaDataSize = 0; bool alphaCompressionSucceeded = false; Span alphaData = Span.Empty; + IMemoryOwner encodedAlphaData = null; if (hasAlpha) { // TODO: This can potentially run in an separate task. - using IMemoryOwner encodedAlphaData = AlphaEncoder.EncodeAlpha( + encodedAlphaData = AlphaEncoder.EncodeAlpha( image, this.configuration, this.memoryAllocator, @@ -405,16 +406,23 @@ internal class Vp8Encoder : IDisposable ExifProfile exifProfile = this.skipMetadata ? null : metadata.ExifProfile; XmpProfile xmpProfile = this.skipMetadata ? null : metadata.XmpProfile; - this.bitWriter.WriteEncodedImageToStream( - stream, - exifProfile, - xmpProfile, - metadata.IccProfile, - (uint)width, - (uint)height, - hasAlpha, - alphaData[..alphaDataSize], - this.alphaCompression && alphaCompressionSucceeded); + try + { + this.bitWriter.WriteEncodedImageToStream( + stream, + exifProfile, + xmpProfile, + metadata.IccProfile, + (uint)width, + (uint)height, + hasAlpha, + alphaData[..alphaDataSize], + this.alphaCompression && alphaCompressionSucceeded); + } + finally + { + encodedAlphaData?.Dispose(); + } } ///