mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 16:44:06 +02:00
fix position tracking with string reading
This commit is contained in:
parent
79bc6d5914
commit
dcaba5b98e
1 changed files with 6 additions and 6 deletions
|
|
@ -230,22 +230,22 @@ impl<'a, E, S> BitStream<'a, E, S>
|
||||||
/// let mut stream = BitStream::new(&buffer, None, None);
|
/// let mut stream = BitStream::new(&buffer, None, None);
|
||||||
/// // Fixed length string
|
/// // Fixed length string
|
||||||
/// stream.set_pos(0);
|
/// stream.set_pos(0);
|
||||||
/// assert_eq!(stream.read_string(Some(13)).unwrap(), "Hello world".to_owned());
|
/// assert_eq!(stream.read_string(Some(11)).unwrap(), "Hello world".to_owned());
|
||||||
/// assert_eq!(13, stream.pos());
|
/// assert_eq!(11 * 8, stream.pos());
|
||||||
/// // fixed length with null padding
|
/// // fixed length with null padding
|
||||||
/// stream.set_pos(0);
|
/// stream.set_pos(0);
|
||||||
/// assert_eq!(stream.read_string(Some(16)).unwrap(), "Hello world".to_owned());
|
/// assert_eq!(stream.read_string(Some(16)).unwrap(), "Hello world".to_owned());
|
||||||
/// assert_eq!(16, stream.pos());
|
/// assert_eq!(16 * 8, stream.pos());
|
||||||
/// // null terminated
|
/// // null terminated
|
||||||
/// stream.set_pos(0);
|
/// stream.set_pos(0);
|
||||||
/// assert_eq!(stream.read_string(None).unwrap(), "Hello world".to_owned());
|
/// assert_eq!(stream.read_string(None).unwrap(), "Hello world".to_owned());
|
||||||
/// assert_eq!(12, stream.pos()); // 1 more for the terminating null byte
|
/// assert_eq!(12 * 8, stream.pos()); // 1 more for the terminating null byte
|
||||||
/// ```
|
/// ```
|
||||||
pub fn read_string(&mut self, byte_len: Option<usize>) -> Result<String> {
|
pub fn read_string(&mut self, byte_len: Option<usize>) -> Result<String> {
|
||||||
let result = self.buffer.read_string(self.pos, byte_len)?;
|
let result = self.buffer.read_string(self.pos, byte_len)?;
|
||||||
let read = match byte_len {
|
let read = match byte_len {
|
||||||
Some(len) => len,
|
Some(len) => len * 8,
|
||||||
None => result.len() + 1
|
None => (result.len() + 1) * 8
|
||||||
};
|
};
|
||||||
self.pos += read;
|
self.pos += read;
|
||||||
Ok(result)
|
Ok(result)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue