@@ -550,9 +550,9 @@ impl QueueFile {
550550 ensure ! ( i32 :: try_from( len) . is_ok( ) , ElementTooBigSnafu { } ) ;
551551
552552 if first_added. is_none ( ) {
553- first_added = Some ( Element :: new ( pos, len) ) ;
553+ first_added = Some ( Element :: new ( pos, len) ? ) ;
554554 }
555- last_added = Some ( Element :: new ( pos, len) ) ;
555+ last_added = Some ( Element :: new ( pos, len) ? ) ;
556556
557557 self . write_buf . extend ( & ( len as u32 ) . to_be_bytes ( ) ) ;
558558 self . write_buf . extend ( elem) ;
@@ -678,7 +678,7 @@ impl QueueFile {
678678 // Commit the header.
679679 self . write_header ( self . file_len ( ) , self . elem_cnt - n, new_first_pos, self . last . pos ) ?;
680680 self . elem_cnt -= n;
681- self . first = Element :: new ( new_first_pos, new_first_len) ;
681+ self . first = Element :: new ( new_first_pos, new_first_len) ? ;
682682
683683 if let Some ( cached_index) = cached_index {
684684 self . cached_offsets . drain ( ..=cached_index) ;
@@ -855,14 +855,14 @@ impl QueueFile {
855855 self . inner . write ( & header. as_ref ( ) [ ..self . header_len as usize ] )
856856 }
857857
858- fn read_element ( & mut self , pos : u64 ) -> io :: Result < Element > {
858+ fn read_element ( & mut self , pos : u64 ) -> Result < Element > {
859859 if pos == 0 {
860860 Ok ( Element :: EMPTY )
861861 } else {
862862 let mut buf: [ u8 ; 4 ] = [ 0 ; Element :: HEADER_LENGTH ] ;
863863 self . ring_read ( pos, & mut buf) ?;
864864
865- Ok ( Element :: new ( pos, u32:: from_be_bytes ( buf) as usize ) )
865+ Element :: new ( pos, u32:: from_be_bytes ( buf) as usize )
866866 }
867867 }
868868
@@ -964,7 +964,7 @@ impl QueueFile {
964964 // Commit the expansion.
965965 if self . last . pos < self . first . pos {
966966 let new_last_pos = orig_file_len + self . last . pos - self . header_len ;
967- self . last = Element :: new ( new_last_pos, self . last . len ) ;
967+ self . last = Element :: new ( new_last_pos, self . last . len ) ? ;
968968 }
969969
970970 // TODO: cached offsets might be recalculated after transfer
@@ -1189,19 +1189,16 @@ impl Element {
11891189 const EMPTY : Self = Self { pos : 0 , len : 0 } ;
11901190 const HEADER_LENGTH : usize = 4 ;
11911191
1192- fn new ( pos : u64 , len : usize ) -> Self {
1193- assert ! (
1194- i64 :: try_from( pos) . is_ok( ) ,
1195- "element position must be less than {}" ,
1196- i64 :: max_value( )
1197- ) ;
1198- assert ! (
1199- i32 :: try_from( len) . is_ok( ) ,
1200- "element length must be less than {}" ,
1201- i32 :: max_value( )
1202- ) ;
1192+ #[ inline]
1193+ fn new ( pos : u64 , len : usize ) -> Result < Self > {
1194+ ensure ! ( i64 :: try_from( pos) . is_ok( ) , CorruptedFileSnafu {
1195+ msg: "element position must be less or equal to i64::MAX"
1196+ } ) ;
1197+ ensure ! ( i32 :: try_from( len) . is_ok( ) , CorruptedFileSnafu {
1198+ msg: "element length must be less or equal to i32::MAX"
1199+ } ) ;
12031200
1204- Self { pos, len }
1201+ Ok ( Self { pos, len } )
12051202 }
12061203}
12071204
0 commit comments