diff --git a/src/lib/lwan-h2-huffman.c b/src/lib/lwan-h2-huffman.c index 5265ba33f..81816edf7 100644 --- a/src/lib/lwan-h2-huffman.c +++ b/src/lib/lwan-h2-huffman.c @@ -276,18 +276,20 @@ struct bit_reader { static inline uint8_t peek_byte(struct bit_reader *reader) { if (reader->bitcount < 8) { - const uint64_t adjust = reader->bitcount + (reader->bitcount & 1); if (reader->total_bitcount >= 64) { reader->bitbuf |= read64be(reader->bitptr) >> reader->bitcount; - reader->bitptr += (63 - adjust) >> 3; + reader->bitptr += + (63 - reader->bitcount + (reader->bitcount & 1)) >> 3; reader->bitcount |= 56; } else if (reader->total_bitcount >= 32) { reader->bitbuf |= read32be(reader->bitptr) >> reader->bitcount; - reader->bitptr += (31 - adjust) >> 3; + reader->bitptr += + (31 - reader->bitcount + (reader->bitcount & 1)) >> 3; reader->bitcount |= 24; } else { reader->bitbuf |= *reader->bitptr >> reader->bitcount; - reader->bitptr += (7 - adjust) >> 3; + reader->bitptr += + (7 - reader->bitcount + (reader->bitcount & 1)) >> 3; reader->bitcount |= 8; } } diff --git a/src/scripts/gentables.py b/src/scripts/gentables.py index f6a1cc87e..2642bfb1c 100755 --- a/src/scripts/gentables.py +++ b/src/scripts/gentables.py @@ -182,18 +182,17 @@ def generate_level(level, next_table): static inline uint8_t peek_byte(struct bit_reader *reader) { if (reader->bitcount < 8) { - const uint64_t adjust = reader->bitcount + (reader->bitcount & 1); if (reader->total_bitcount >= 64) { reader->bitbuf |= read64be(reader->bitptr) >> reader->bitcount; - reader->bitptr += (63 - adjust) >> 3; + reader->bitptr += (63 - reader->bitcount + (reader->bitcount & 1)) >> 3; reader->bitcount |= 56; } else if (reader->total_bitcount >= 32) { reader->bitbuf |= read32be(reader->bitptr) >> reader->bitcount; - reader->bitptr += (31 - adjust) >> 3; + reader->bitptr += (31 - reader->bitcount + (reader->bitcount & 1)) >> 3; reader->bitcount |= 24; } else { reader->bitbuf |= *reader->bitptr >> reader->bitcount; - reader->bitptr += (7 - adjust) >> 3; + reader->bitptr += (7 - reader->bitcount + (reader->bitcount & 1)) >> 3; reader->bitcount |= 8; } }