diff --git a/src/ImageSharp/Common/Extensions/StreamExtensions.cs b/src/ImageSharp/Common/Extensions/StreamExtensions.cs index d84780c0d..f2367d488 100644 --- a/src/ImageSharp/Common/Extensions/StreamExtensions.cs +++ b/src/ImageSharp/Common/Extensions/StreamExtensions.cs @@ -48,23 +48,28 @@ namespace SixLabors.ImageSharp if (stream.CanSeek) { - stream.Seek(count, SeekOrigin.Current); // Position += count; + stream.Seek(count, SeekOrigin.Current); return; } - var buffer = ArrayPool.Shared.Rent(count); - while (count > 0) + byte[] buffer = ArrayPool.Shared.Rent(count); + try { - int bytesRead = stream.Read(buffer, 0, count); - if (bytesRead == 0) + while (count > 0) { - break; - } + int bytesRead = stream.Read(buffer, 0, count); + if (bytesRead == 0) + { + break; + } - count -= bytesRead; + count -= bytesRead; + } + } + finally + { + ArrayPool.Shared.Return(buffer); } - - ArrayPool.Shared.Return(buffer); } public static void Read(this Stream stream, IManagedByteBuffer buffer)