Use Stream extension to ensure read operations return the requested number of bytes (unless EOF arrives first).

This commit is contained in:
2022-11-14 09:43:15 +00:00
parent 7437cb04a5
commit 5bb04c0204
5 changed files with 12 additions and 12 deletions

View File

@@ -334,12 +334,12 @@ public sealed class Adler32Context : IChecksum
ushort localSum2 = 0; ushort localSum2 = 0;
var buffer = new byte[65536]; var buffer = new byte[65536];
int read = fileStream.Read(buffer, 0, 65536); int read = fileStream.EnsureRead(buffer, 0, 65536);
while(read > 0) while(read > 0)
{ {
Step(ref localSum1, ref localSum2, buffer, (uint)read, useNative, nativeContext); Step(ref localSum1, ref localSum2, buffer, (uint)read, useNative, nativeContext);
read = fileStream.Read(buffer, 0, 65536); read = fileStream.EnsureRead(buffer, 0, 65536);
} }
var finalSum = (uint)((localSum2 << 16) | localSum1); var finalSum = (uint)((localSum2 << 16) | localSum1);

View File

@@ -371,7 +371,7 @@ public class Crc16Context : IChecksum
ushort[][] localTable = table ?? GenerateTable(polynomial, inverse); ushort[][] localTable = table ?? GenerateTable(polynomial, inverse);
var buffer = new byte[65536]; var buffer = new byte[65536];
int read = fileStream.Read(buffer, 0, 65536); int read = fileStream.EnsureRead(buffer, 0, 65536);
while(read > 0) while(read > 0)
{ {
@@ -396,7 +396,7 @@ public class Crc16Context : IChecksum
} }
} }
read = fileStream.Read(buffer, 0, 65536); read = fileStream.EnsureRead(buffer, 0, 65536);
} }
localHashInt ^= seed; localHashInt ^= seed;

View File

@@ -554,13 +554,13 @@ public sealed class Crc32Context : IChecksum
uint[][] localTable = GenerateTable(polynomial); uint[][] localTable = GenerateTable(polynomial);
var buffer = new byte[65536]; var buffer = new byte[65536];
int read = fileStream.Read(buffer, 0, 65536); int read = fileStream.EnsureRead(buffer, 0, 65536);
while(read > 0) while(read > 0)
{ {
Step(ref localHashInt, localTable, buffer, (uint)read, useIso, useNative, nativeContext); Step(ref localHashInt, localTable, buffer, (uint)read, useIso, useNative, nativeContext);
read = fileStream.Read(buffer, 0, 65536); read = fileStream.EnsureRead(buffer, 0, 65536);
} }
localHashInt ^= seed; localHashInt ^= seed;

View File

@@ -498,13 +498,13 @@ public sealed class Crc64Context : IChecksum
ulong[][] localTable = GenerateTable(polynomial); ulong[][] localTable = GenerateTable(polynomial);
var buffer = new byte[65536]; var buffer = new byte[65536];
int read = fileStream.Read(buffer, 0, 65536); int read = fileStream.EnsureRead(buffer, 0, 65536);
while(read > 0) while(read > 0)
{ {
Step(ref localHashInt, localTable, buffer, (uint)read, useEcma, useNative, nativeContext); Step(ref localHashInt, localTable, buffer, (uint)read, useEcma, useNative, nativeContext);
read = fileStream.Read(buffer, 0, 65536); read = fileStream.EnsureRead(buffer, 0, 65536);
} }
localHashInt ^= seed; localHashInt ^= seed;

View File

@@ -313,13 +313,13 @@ public sealed class Fletcher32Context : IChecksum
ushort localSum2 = 0xFFFF; ushort localSum2 = 0xFFFF;
var buffer = new byte[65536]; var buffer = new byte[65536];
int read = fileStream.Read(buffer, 0, 65536); int read = fileStream.EnsureRead(buffer, 0, 65536);
while(read > 0) while(read > 0)
{ {
Step(ref localSum1, ref localSum2, buffer, (uint)read, useNative, nativeContext); Step(ref localSum1, ref localSum2, buffer, (uint)read, useNative, nativeContext);
read = fileStream.Read(buffer, 0, 65536); read = fileStream.EnsureRead(buffer, 0, 65536);
} }
var finalSum = (uint)((localSum2 << 16) | localSum1); var finalSum = (uint)((localSum2 << 16) | localSum1);
@@ -641,13 +641,13 @@ public sealed class Fletcher16Context : IChecksum
byte localSum2 = 0xFF; byte localSum2 = 0xFF;
var buffer = new byte[65536]; var buffer = new byte[65536];
int read = fileStream.Read(buffer, 0, 65536); int read = fileStream.EnsureRead(buffer, 0, 65536);
while(read > 0) while(read > 0)
{ {
Step(ref localSum1, ref localSum2, buffer, (uint)read, useNative, nativeContext); Step(ref localSum1, ref localSum2, buffer, (uint)read, useNative, nativeContext);
read = fileStream.Read(buffer, 0, 65536); read = fileStream.EnsureRead(buffer, 0, 65536);
} }
var finalSum = (ushort)((localSum2 << 8) | localSum1); var finalSum = (ushort)((localSum2 << 8) | localSum1);