diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanBitReader.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanBitReader.cs index 90ec0d6ca..40f6dae9b 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanBitReader.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/ModifiedHuffmanBitReader.cs @@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors } /// - public override bool HasMoreData => this.Position < (ulong)this.DataLength - 1 || (this.BitsRead > 0 && this.BitsRead < 7); + public override bool HasMoreData => this.Position < (ulong)this.DataLength - 1 || ((uint)(this.BitsRead - 1) < (7 - 1)); /// public override bool IsEndOfScanLine @@ -53,8 +53,8 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors { base.StartNewRow(); - int pad = 8 - (this.BitsRead % 8); - if (pad != 8) + int remainder = this.BitsRead & 7; // bit-hack for % 8 + if (remainder != 0) { // Skip padding bits, move to next byte. this.Position++; diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6BitReader.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6BitReader.cs index 0ebaccf7e..05bbd26ab 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6BitReader.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6BitReader.cs @@ -63,7 +63,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors } /// - public override bool HasMoreData => this.Position < (ulong)this.DataLength - 1 || (this.BitsRead > 0 && this.BitsRead < 7); + public override bool HasMoreData => this.Position < (ulong)this.DataLength - 1 || ((uint)(this.BitsRead - 1) < (7 - 1)); /// /// Gets or sets the two dimensional code. diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs index 87095d5ee..255e861b3 100644 --- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs +++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T6TiffCompression.cs @@ -84,8 +84,8 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Decompressors } // Write padding bytes, if necessary. - uint pad = 8 - (bitsWritten % 8); - if (pad != 8) + uint remainder = bitsWritten % 8; + if (remainder != 0) { BitWriterUtils.WriteBits(buffer, (int)bitsWritten, pad, 0); bitsWritten += pad;