mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 16:44:06 +02:00
Merge pull request #6 from hussein-aitlahcen/master
fixup: decrement before indexing with `last_mut`
This commit is contained in:
commit
7422800014
4 changed files with 20 additions and 3 deletions
|
|
@ -88,7 +88,8 @@ pub use write::{BitWrite, BitWriteSized};
|
|||
pub use writestream::BitWriteStream;
|
||||
|
||||
mod endianness;
|
||||
mod num_traits;
|
||||
#[allow(missing_docs)]
|
||||
pub mod num_traits;
|
||||
mod read;
|
||||
mod readbuffer;
|
||||
mod readstream;
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ impl<'a, T: BitWrite<E> + ToOwned + ?Sized, E: Endianness> BitWrite<E> for Cow<'
|
|||
|
||||
macro_rules! impl_write_tuple {
|
||||
($($i:tt: $type:ident),*) => {
|
||||
impl<'a, E: Endianness, $($type: BitWrite<E>),*> BitWrite<E> for ($($type),*) {
|
||||
impl<E: Endianness, $($type: BitWrite<E>),*> BitWrite<E> for ($($type),*) {
|
||||
#[inline]
|
||||
fn write(&self, stream: &mut BitWriteStream<E>) -> Result<()> {
|
||||
$(self.$i.write(stream)?;)*
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ impl<'a> WriteData<'a> {
|
|||
fn last_mut(&mut self) -> Option<&mut u8> {
|
||||
match self {
|
||||
WriteData::Vec(vec) => vec.last_mut(),
|
||||
WriteData::Slice { data, length } if *length > 0 => Some(&mut data[*length]),
|
||||
WriteData::Slice { data, length } if *length > 0 => Some(&mut data[*length - 1]),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -227,3 +227,19 @@ fn test_write_to_slice() {
|
|||
// 0 padded
|
||||
assert!(!read.read_bool().unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_last_slice() {
|
||||
let mut data = [0; 1];
|
||||
{
|
||||
let mut stream = BitWriteStream::from_slice(&mut data[..], LittleEndian);
|
||||
|
||||
stream.write_int::<u8>(0b1000, 4).unwrap();
|
||||
stream.write_bool(true).unwrap();
|
||||
}
|
||||
|
||||
let mut read = BitReadStream::from(BitReadBuffer::new(&data[..], LittleEndian));
|
||||
|
||||
assert_eq!(0b1000, read.read_int::<u8>(4).unwrap());
|
||||
assert_eq!(true, read.read_bool().unwrap());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue