fix 1-indexed block positions
This commit is contained in:
parent
942e5ee1d8
commit
5b58efe052
10
src/v1.rs
10
src/v1.rs
@ -329,6 +329,10 @@ impl std::error::Error for Error{}
|
||||
#[brw(little)]
|
||||
#[derive(Debug,Clone,Copy)]
|
||||
pub struct BlockId(#[br(map=|i:u32|i-1)]u32);
|
||||
#[binrw]
|
||||
#[brw(little)]
|
||||
#[derive(Debug,Clone,Copy)]
|
||||
pub struct BlockPosition(#[br(map=|i:u32|i-1)]u32);
|
||||
|
||||
#[binrw]
|
||||
#[brw(little)]
|
||||
@ -358,7 +362,7 @@ pub struct FileHeader{
|
||||
pub num_offline_events:u32,
|
||||
pub num_realtime_events:u32,
|
||||
#[br(count=num_offline_events+num_realtime_events+1)]
|
||||
pub block_positions:Vec<u32>,
|
||||
pub block_positions:Vec<BlockPosition>,
|
||||
#[br(count=num_offline_events)]
|
||||
pub offline_blocks_timeline:Vec<TimedBlockId>,
|
||||
#[br(count=num_realtime_events)]
|
||||
@ -373,8 +377,8 @@ impl FileHeader{
|
||||
if self.block_positions.len() as u32<=block_id.0{
|
||||
return Err(Error::InvalidBlockId(block_id));
|
||||
}
|
||||
let start=self.block_positions[block_id.0 as usize];
|
||||
let end=self.block_positions[block_id.0 as usize+1];
|
||||
let start=self.block_positions[block_id.0 as usize].0;
|
||||
let end=self.block_positions[block_id.0 as usize+1].0;
|
||||
Ok(BlockInfo{start,length:end-start})
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user