Improve error handling in the map and array custom parsers

This commit is contained in:
Joshua Goins 2025-02-23 15:26:52 -05:00
parent f304304d19
commit 6b7d4c66dd
2 changed files with 6 additions and 6 deletions

View file

@ -6,12 +6,12 @@ use binrw::{BinRead, BinResult, binrw};
fn custom_parser(size_in_bytes: u32, value_type: &str) -> BinResult<Vec<ArrayEntry>> {
let mut result = Vec::<ArrayEntry>::new();
let mut current = reader.stream_position().unwrap();
let mut current = reader.stream_position()?;
let end = current + size_in_bytes as u64 - 4;
while current < end {
result.push(ArrayEntry::read_options(reader, endian, (value_type,)).unwrap());
current = reader.stream_position().unwrap();
result.push(ArrayEntry::read_options(reader, endian, (value_type,))?);
current = reader.stream_position()?;
}
Ok(result)
}

View file

@ -185,12 +185,12 @@ fn custom_parser(
) -> BinResult<Vec<MapEntry>> {
let mut result = Vec::<MapEntry>::new();
let mut current = reader.stream_position().unwrap();
let mut current = reader.stream_position()?;
let end = current + size_in_bytes as u64 - 5 - 3;
while current < end {
result.push(MapEntry::read_options(reader, endian, (key_type, value_type)).unwrap());
current = reader.stream_position().unwrap();
result.push(MapEntry::read_options(reader, endian, (key_type, value_type))?);
current = reader.stream_position()?;
}
Ok(result)
}