Skip to content

Commit 76a053b

Browse files
committed
Buffers of 16 or multiple of 16 bytes are not fully processed by hot loop (off by one in check)
1 parent 007687a commit 76a053b

File tree

4 files changed

+8
-7
lines changed

4 files changed

+8
-7
lines changed

src/crc128.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ const fn update_slice16(
7777
let mut i = 0;
7878
let len = bytes.len();
7979
if reflect {
80-
while i + 16 < len {
80+
while i + 16 <= len {
8181
assert!((i + 15) < len);
8282

8383
let current0 = bytes[i] ^ crc as u8;
@@ -123,7 +123,7 @@ const fn update_slice16(
123123
i += 1;
124124
}
125125
} else {
126-
while i + 16 < len {
126+
while i + 16 <= len {
127127
assert!((i + 15) < len);
128128

129129
let current0 = bytes[i] ^ (crc >> 120) as u8;

src/crc16.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ const fn update_slice16(
7575
) -> u16 {
7676
let len = bytes.len();
7777
let mut i = 0;
78+
7879
if reflect {
79-
while i + 16 < len {
80+
while i + 16 <= len {
8081
assert!((i + 15) < len);
8182

8283
let current0 = bytes[i] ^ (crc as u8);
@@ -108,7 +109,7 @@ const fn update_slice16(
108109
i += 1;
109110
}
110111
} else {
111-
while i + 16 < len {
112+
while i + 16 <= len {
112113
assert!((i + 15) < len);
113114

114115
let current0 = bytes[i] ^ ((crc >> 8) as u8);

src/crc64.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ const fn update_slice16(
7878
let mut i = 0;
7979
let len = bytes.len();
8080
if reflect {
81-
while i + 16 < len {
81+
while i + 16 <= len {
8282
assert!((i + 15) < len);
8383

8484
let current0 = bytes[i] ^ crc as u8;
@@ -116,7 +116,7 @@ const fn update_slice16(
116116
i += 1;
117117
}
118118
} else {
119-
while i + 16 < len {
119+
while i + 16 <= len {
120120
assert!((i + 15) < len);
121121

122122
let current0 = bytes[i] ^ (crc >> 56) as u8;

src/crc8.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const fn update_slice16(mut crc: u8, table: &[[u8; 256]; 16], bytes: &[u8]) -> u
5757
let len = bytes.len();
5858
let mut i = 0;
5959

60-
while i + 16 < len {
60+
while i + 16 <= len {
6161
assert!((i + 15) < len);
6262

6363
crc = table[0][bytes[i + 15] as usize]

0 commit comments

Comments
 (0)