mirror of
https://github.com/n0-computer/noq.git
synced 2026-09-19 09:45:20 +00:00
QPACK: fix a prefi_int bug when integer encoding has a perfect fit
This commit is contained in:
@@ -58,7 +58,7 @@ pub fn encode<B: BufMut>(size: u8, flags: u8, value: usize, buf: &mut B) {
|
||||
buf.write(mask | flags);
|
||||
let mut remaining = value - mask as usize;
|
||||
|
||||
while remaining > 128 {
|
||||
while remaining >= 128 {
|
||||
let rest = (remaining % 128) as u8;
|
||||
buf.write(rest + 128);
|
||||
remaining /= 128;
|
||||
@@ -138,4 +138,9 @@ mod test {
|
||||
let mut read = Cursor::new(&buf);
|
||||
assert!(super::decode(8, &mut read).is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn number_never_ends_with_0x80() {
|
||||
check_codec(4, 0b0001, 143, &[31, 128, 1]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,9 @@ impl HuffmanEncoder {
|
||||
self.buffer.reserve(((7 * end_range.byte) / 4) as usize);
|
||||
}
|
||||
|
||||
while self.buffer.len() <= end_range.byte as usize {
|
||||
let forward =
|
||||
end_range.byte as usize - self.buffer.len() + if end_range.bit > 0 { 1 } else { 0 };
|
||||
for _ in 0..forward {
|
||||
// push filler value that will ends huffman decoding if not
|
||||
// modified
|
||||
self.buffer.push(255);
|
||||
|
||||
Reference in New Issue
Block a user