fn parser(input: &[u8]) -> IResult<&[u8], (u8, u8)> {
bits!(input, tuple!(take_bits!(1u8), take_bits!(7u8)))
}
- let (i2, huffslen) = parser(input)?;
- let (i3, data) = take!(i2, huffslen.1 as usize)?;
+ let (i1, huffslen) = parser(input)?;
+ let (i2, stringlen) = if huffslen.1 == 0x7F {
+ let (i3, maxsize2) = take_while_m_n!(i1, 0, 9, |ch| (ch & 0x80) != 0)?;
+ let (i4, maxsize3) = be_u8(i3)?;
+ let mut maxsize = 0x7F as u64;
+ for i in 0..maxsize2.len() {
+ maxsize += ((maxsize2[i] & 0x7F) as u64) << (7 * i);
+ }
+ maxsize += (maxsize3 as u64) << (7 * maxsize2.len());
+ (i4, maxsize)
+ } else {
+ (i1, huffslen.1 as u64)
+ };
+
+ let (i3, data) = take!(i2, stringlen as usize)?;
if huffslen.0 == 0 {
return Ok((i3, data.to_vec()));
} else {
}
}
}
-
}