|
|
@ -48,11 +48,13 @@ namespace SixLabors.ImageSharp |
|
|
|
|
|
|
|
|
if (stream.CanSeek) |
|
|
if (stream.CanSeek) |
|
|
{ |
|
|
{ |
|
|
stream.Seek(count, SeekOrigin.Current); // Position += count;
|
|
|
stream.Seek(count, SeekOrigin.Current); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var buffer = ArrayPool<byte>.Shared.Rent(count); |
|
|
byte[] buffer = ArrayPool<byte>.Shared.Rent(count); |
|
|
|
|
|
try |
|
|
|
|
|
{ |
|
|
while (count > 0) |
|
|
while (count > 0) |
|
|
{ |
|
|
{ |
|
|
int bytesRead = stream.Read(buffer, 0, count); |
|
|
int bytesRead = stream.Read(buffer, 0, count); |
|
|
@ -63,9 +65,12 @@ namespace SixLabors.ImageSharp |
|
|
|
|
|
|
|
|
count -= bytesRead; |
|
|
count -= bytesRead; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
finally |
|
|
|
|
|
{ |
|
|
ArrayPool<byte>.Shared.Return(buffer); |
|
|
ArrayPool<byte>.Shared.Return(buffer); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public static void Read(this Stream stream, IManagedByteBuffer buffer) |
|
|
public static void Read(this Stream stream, IManagedByteBuffer buffer) |
|
|
=> stream.Read(buffer.Array, 0, buffer.Length()); |
|
|
=> stream.Read(buffer.Array, 0, buffer.Length()); |
|
|
|