diff --git a/src/ImageSharp/Formats/Jpeg/PdfJsPort/Components/DoubleBufferedStreamReader.cs b/src/ImageSharp/Formats/Jpeg/PdfJsPort/Components/DoubleBufferedStreamReader.cs
index d8a43428d..eb562424d 100644
--- a/src/ImageSharp/Formats/Jpeg/PdfJsPort/Components/DoubleBufferedStreamReader.cs
+++ b/src/ImageSharp/Formats/Jpeg/PdfJsPort/Components/DoubleBufferedStreamReader.cs
@@ -15,7 +15,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
internal class DoubleBufferedStreamReader : IDisposable
{
///
- /// The length, in bytes, of the chunk
+ /// The length, in bytes, of the buffering chunk
///
public const int ChunkLength = 4096;
@@ -38,7 +38,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
{
this.stream = stream;
this.Length = stream.Length;
-
this.buffer = memoryManager.AllocateCleanManagedByteBuffer(ChunkLength);
this.chunk = this.buffer.Array;
}
@@ -62,7 +61,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
{
// Reset everything. It's easier than tracking.
this.position = value;
- this.stream.Seek(this.position, SeekOrigin.Begin);
this.bytesRead = ChunkLength;
}
}
@@ -96,8 +94,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
/// The number of bytes to skip
public void Skip(int count)
{
- this.position += count;
- this.bytesRead += count;
+ this.Position += count;
}
///
@@ -144,9 +141,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components
this.stream.Seek(this.position, SeekOrigin.Begin);
n = this.stream.Read(buffer, offset, count);
- // Ensure next read fills the chunk
- this.bytesRead = ChunkLength;
- this.position += count;
+ this.Position += count;
}
return Math.Max(n, 0);
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/DoubleBufferedStreamReaderTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/DoubleBufferedStreamReaderTests.cs
index c1049f025..61017ce9b 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/DoubleBufferedStreamReaderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/DoubleBufferedStreamReaderTests.cs
@@ -4,19 +4,22 @@
using System;
using System.IO;
using SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components;
+using SixLabors.ImageSharp.Memory;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg
{
public class DoubleBufferedStreamReaderTests
{
+ private MemoryManager manager = Configuration.Default.MemoryManager;
+
[Fact]
public void DoubleBufferedStreamReaderCanReadSingleByteFromOrigin()
{
using (MemoryStream stream = CreateTestStream())
{
byte[] expected = stream.ToArray();
- var reader = new DoubleBufferedStreamReader(stream);
+ var reader = new DoubleBufferedStreamReader(this.manager, stream);
Assert.Equal(expected[0], reader.ReadByte());
@@ -32,7 +35,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
using (MemoryStream stream = CreateTestStream())
{
byte[] expected = stream.ToArray();
- var reader = new DoubleBufferedStreamReader(stream);
+ var reader = new DoubleBufferedStreamReader(this.manager, stream);
for (int i = 0; i < expected.Length; i++)
{
@@ -64,7 +67,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
{
byte[] buffer = new byte[2];
byte[] expected = stream.ToArray();
- var reader = new DoubleBufferedStreamReader(stream);
+ var reader = new DoubleBufferedStreamReader(this.manager, stream);
Assert.Equal(2, reader.Read(buffer, 0, 2));
Assert.Equal(expected[0], buffer[0]);
@@ -83,7 +86,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
{
byte[] buffer = new byte[2];
byte[] expected = stream.ToArray();
- var reader = new DoubleBufferedStreamReader(stream);
+ var reader = new DoubleBufferedStreamReader(this.manager, stream);
for (int i = 0, o = 0; i < expected.Length / 2; i++, o += 2)
{