Browse Source

Try fix issue with undisposed buffers

pull/3096/head
Brian Popow 2 months ago
parent
commit
9e80da9117
  1. 9
      src/ImageSharp/Formats/Exr/Compression/Compressors/ZipExrCompressor.cs
  2. 2
      src/ImageSharp/Formats/Exr/Compression/Decompressors/ZipExrCompression.cs

9
src/ImageSharp/Formats/Exr/Compression/Compressors/ZipExrCompressor.cs

@ -11,7 +11,7 @@ internal class ZipExrCompressor : ExrBaseCompressor
{
private readonly DeflateCompressionLevel compressionLevel;
private MemoryStream memoryStream = new();
private readonly MemoryStream memoryStream = new();
private readonly System.Buffers.IMemoryOwner<byte> buffer;
@ -60,12 +60,17 @@ internal class ZipExrCompressor : ExrBaseCompressor
byte[] buffer = this.memoryStream.GetBuffer();
this.Output.Write(buffer, 0, size);
this.memoryStream = new();
// Reset memory stream for next pixel row.
this.memoryStream.Seek(0, SeekOrigin.Begin);
this.memoryStream.SetLength(0);
return (uint)size;
}
/// <inheritdoc/>
protected override void Dispose(bool disposing)
{
this.buffer.Dispose();
this.memoryStream?.Dispose();
}
}

2
src/ImageSharp/Formats/Exr/Compression/Decompressors/ZipExrCompression.cs

@ -30,7 +30,7 @@ internal class ZipExrCompression : ExrBaseDecompressor
return left > 0 ? left : 0;
});
inflateStream.AllocateNewBytes((int)this.BytesPerBlock, true);
DeflateStream dataStream = inflateStream.CompressedStream!;
using DeflateStream dataStream = inflateStream.CompressedStream!;
int totalRead = 0;
while (totalRead < buffer.Length)

Loading…
Cancel
Save