From ec8dd2ddeef00cc54cb3a2c8af616e16a4d8054a Mon Sep 17 00:00:00 2001 From: kirbylife Date: Wed, 4 May 2022 23:21:58 -0500 Subject: [PATCH] change REV_U8 array to invert function --- src/lib.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c7fb151..d383e5f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -165,19 +165,20 @@ impl DynHuffman16 { with_codes!(clens, 15 => u16, |i: u16, code: u16, bits: u8| -> _ { let entry = i | (u16::from(bits) << 12); if bits <= 8 { - let base = match (code << (8 - bits)).swap_bits() { - Some(&v) => v, - None => return Err("invalid length code") + let base = match u8::try_from(code << (8 - bits)) { + Ok(v) => v.swap_bits(), + _ => return Err("invalid length code") }; for rest in 0u8 .. 1 << (8 - bits) { patterns[(base | (rest << (bits & 7))) as usize] = entry; } } else { - let low = match (code >> (bits - 8)).swap_bits() { - Some(&v) => v, - None => return Err("invalid length code") + let low = match u8::try_from(code >> (bits - 8)) { + Ok(v) => v.swap_bits(), + _ => return Err("invalid length code") }; - let high = ((code << (16 - bits)) & 0xff).swap_bits(); + let high = (code << (16 - bits)) & 0xff; + let high = (high as u8).swap_bits(); let (min_bits, idx) = if patterns[low as usize] != 0xffff { let bits_prev = (patterns[low as usize] >> 12) as u8; (core::cmp::min(bits_prev, bits), patterns[low as usize] & 0x7ff)