X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Flzx_compress.c;h=6a631db9ae37f7738fccd3e1b544e28c99dcb75e;hb=b4d8b14450c1f36ad07706888d9042bce5d9c2e0;hp=f6b29b3009686b9eb3e324e1ee24fb542e7f6d8f;hpb=c01983481ed2fc7dd070827dbb7d9df5d990349c;p=wimlib diff --git a/src/lzx_compress.c b/src/lzx_compress.c index f6b29b30..6a631db9 100644 --- a/src/lzx_compress.c +++ b/src/lzx_compress.c @@ -232,9 +232,10 @@ struct lzx_sequence { u16 adjusted_length; /* If bit 31 is clear, then this field contains the match header in bits - * 0-8 and the match offset minus LZX_OFFSET_ADJUSTMENT in bits 9-30. - * Otherwise, this sequence's literal run was the last literal run in - * the block, so there is no match that follows it. */ + * 0-8, and either the match offset plus LZX_OFFSET_ADJUSTMENT or a + * recent offset code in bits 9-30. Otherwise (if bit 31 is set), this + * sequence's literal run was the last literal run in the block, so + * there is no match that follows it. */ u32 adjusted_offset_and_match_hdr; }; @@ -331,15 +332,6 @@ lzx_lru_queue_push(struct lzx_lru_queue queue, u32 offset) }; } -/* Pop a match offset off the front (most recently used) end of the queue. */ -static inline u32 -lzx_lru_queue_pop(struct lzx_lru_queue *queue_p) -{ - u32 offset = queue_p->R & LZX_QUEUE64_OFFSET_MASK; - queue_p->R >>= LZX_QUEUE64_OFFSET_SHIFT; - return offset; -} - /* Swap a match offset to the front of the queue. */ static inline struct lzx_lru_queue lzx_lru_queue_swap(struct lzx_lru_queue queue, unsigned idx) @@ -594,13 +586,13 @@ lzx_flush_bits(struct lzx_output_bitstream *os, unsigned max_num_bits) if (os->end - os->next < 6) return; - put_unaligned_u16_le(os->bitbuf >> ((os->bitcount - 16) & + put_unaligned_le16(os->bitbuf >> ((os->bitcount - 16) & shift_mask), os->next + 0); if (max_num_bits > 16) - put_unaligned_u16_le(os->bitbuf >> ((os->bitcount - 32) & + put_unaligned_le16(os->bitbuf >> ((os->bitcount - 32) & shift_mask), os->next + 2); if (max_num_bits > 32) - put_unaligned_u16_le(os->bitbuf >> ((os->bitcount - 48) & + put_unaligned_le16(os->bitbuf >> ((os->bitcount - 48) & shift_mask), os->next + 4); os->next += (os->bitcount >> 4) << 1; os->bitcount &= 15; @@ -625,7 +617,7 @@ lzx_flush_output(struct lzx_output_bitstream *os) return 0; if (os->bitcount != 0) { - put_unaligned_u16_le(os->bitbuf << (16 - os->bitcount), os->next); + put_unaligned_le16(os->bitbuf << (16 - os->bitcount), os->next); os->next += 2; }