X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Fio%2Fcodebook.rs;h=d835ce31501af39b963a0e6985a09299ca0da690;hb=0bbe433e917f4253df8536bf5e583b07f71bf6c0;hp=553f2f9c84e77415580404ae38fb58c092bd465c;hpb=fcc25d82096224ba0ba4c8b800038234fbeb82a9;p=nihav.git diff --git a/nihav-core/src/io/codebook.rs b/nihav-core/src/io/codebook.rs index 553f2f9..d835ce3 100644 --- a/nihav-core/src/io/codebook.rs +++ b/nihav-core/src/io/codebook.rs @@ -370,10 +370,10 @@ impl<'a, S: Copy> CodebookReader for BitReader<'a> { let bits = cb.table[lut_idx] & 0x7F; esc = (cb.table[lut_idx] & 0x80) != 0; idx = (cb.table[lut_idx] >> 8) as usize; - if (bits as isize) > self.left() { + let skip_bits = if esc { u32::from(lut_bits) } else { bits }; + if (skip_bits as isize) > self.left() { return Err(CodebookError::InvalidCode); } - let skip_bits = if esc { u32::from(lut_bits) } else { bits }; self.skip(skip_bits as u32).unwrap(); lut_bits = bits as u8; }