diff --git a/protocol/src/types/bit/map.rs b/protocol/src/types/bit/map.rs index 1c7961d..1c743ec 100644 --- a/protocol/src/types/bit/map.rs +++ b/protocol/src/types/bit/map.rs @@ -64,11 +64,20 @@ impl Map { } pub fn from_raw(bits: Vec, size: usize, padded: bool) -> Map { - Map { - length: (bits.len() * 64 + (size - 1)) / size, - bit_size: size, - bits, - padded, + if size == 0 { + Map { + length: 0, + bit_size: size, + bits, + padded, + } + } else { + Map { + length: (bits.len() * 64 + (size - 1)) / size, + bit_size: size, + bits, + padded, + } } } @@ -81,6 +90,7 @@ impl Map { } fn get_bit_offset(&self, i: usize) -> usize { + assert!(self.length != 0); let padding = if self.padded { i / (64 / self.bit_size) * (64 % self.bit_size) } else {