From 4d63706e2a560eca750382cca1f4ea983197b52a Mon Sep 17 00:00:00 2001 From: Tomasz Bartos Date: Sun, 6 Dec 2020 12:05:41 +0100 Subject: [PATCH] Narrowed bitset number of bits --- src/common/bit_set.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/common/bit_set.rs b/src/common/bit_set.rs index 400f27a..177ca66 100644 --- a/src/common/bit_set.rs +++ b/src/common/bit_set.rs @@ -4,7 +4,7 @@ use speedy::{Context, Readable, Reader, Writable, Writer}; use std::ops::{Deref, DerefMut}; #[derive(Debug, PartialEq)] -pub struct BitSetRef(BitSet); +pub struct BitSetRef(BitSet); impl BitSetRef { pub fn new() -> BitSetRef { @@ -34,13 +34,16 @@ impl<'a, C: Context> Readable<'a, C> for BitSetRef { #[inline] fn read_from>(reader: &mut R) -> Result { let number_of_bits = reader.read_u32()?; + let number_of_bytes = (number_of_bits + 31) / 32; + let mut bit_vec = BitVec::with_capacity(number_of_bits as usize); unsafe { let inner = bit_vec.storage_mut(); - for _ in 0..(number_of_bits / 32) { + for _ in 0..number_of_bytes { inner.push(reader.read_u32()?); } } + Ok(BitSetRef(BitSet::from_bit_vec(bit_vec))) }