diff --git a/src/ICSharpCode.SharpZipLib/Checksum/BZip2Crc.cs b/src/ICSharpCode.SharpZipLib/Checksum/BZip2Crc.cs index aac3075b6..9674dcec7 100644 --- a/src/ICSharpCode.SharpZipLib/Checksum/BZip2Crc.cs +++ b/src/ICSharpCode.SharpZipLib/Checksum/BZip2Crc.cs @@ -177,10 +177,11 @@ public void Update(byte[] buffer) /// public void Update(ArraySegment segment) { - foreach (byte b in segment) - { - Update(b); - } + var count = segment.Count; + var offset = segment.Offset; + + while (--count >= 0) + Update(segment.Array[offset++]); } } } diff --git a/src/ICSharpCode.SharpZipLib/Checksum/Crc32.cs b/src/ICSharpCode.SharpZipLib/Checksum/Crc32.cs index f9861685a..9b8ab4b6d 100644 --- a/src/ICSharpCode.SharpZipLib/Checksum/Crc32.cs +++ b/src/ICSharpCode.SharpZipLib/Checksum/Crc32.cs @@ -166,10 +166,11 @@ public void Update(byte[] buffer) /// public void Update(ArraySegment segment) { - foreach (byte b in segment) - { - Update(b); - } + var count = segment.Count; + var offset = segment.Offset; + + while (--count >= 0) + Update(segment.Array[offset++]); } } }