11use  std:: { fs,  io} ; 
22
33use  gix_features:: zlib:: Decompress ; 
4- use  gix_hash:: { Hasher ,  ObjectId } ; 
4+ use  gix_hash:: { hasher ,   Hasher ,  ObjectId } ; 
55
66use  crate :: data:: input; 
77
5252        object_hash :  gix_hash:: Kind , 
5353    )  -> Result < BytesToEntriesIter < BR > ,  input:: Error >  { 
5454        let  mut  header_data = [ 0u8 ;  12 ] ; 
55-         read. read_exact ( & mut  header_data) ?; 
55+         read. read_exact ( & mut  header_data) . map_err ( hasher :: io :: Error :: from ) ?; 
5656
5757        let  ( version,  num_objects)  = crate :: data:: header:: decode ( & header_data) ?; 
5858        assert_eq ! ( 
9797            } 
9898            None  => crate :: data:: Entry :: from_read ( & mut  self . read ,  self . offset ,  self . hash_len ) , 
9999        } 
100-         . map_err ( input :: Error :: from) ?; 
100+         . map_err ( hasher :: io :: Error :: from) ?; 
101101
102102        // Decompress object to learn its compressed bytes 
103103        let  compressed_buf = self . compressed_buf . take ( ) . unwrap_or_else ( || Vec :: with_capacity ( 4096 ) ) ; 
@@ -114,7 +114,7 @@ where
114114            decompressor :  & mut  self . decompressor , 
115115        } ; 
116116
117-         let  bytes_copied = io:: copy ( & mut  decompressed_reader,  & mut  io:: sink ( ) ) ?; 
117+         let  bytes_copied = io:: copy ( & mut  decompressed_reader,  & mut  io:: sink ( ) ) . map_err ( hasher :: io :: Error :: from ) ?; 
118118        if  bytes_copied != entry. decompressed_size  { 
119119            return  Err ( input:: Error :: IncompletePack  { 
120120                actual :  bytes_copied, 
@@ -138,7 +138,10 @@ where
138138
139139        let  crc32 = if  self . compressed . crc32 ( )  { 
140140            let  mut  header_buf = [ 0u8 ;  12  + gix_hash:: Kind :: longest ( ) . len_in_bytes ( ) ] ; 
141-             let  header_len = entry. header . write_to ( bytes_copied,  & mut  header_buf. as_mut ( ) ) ?; 
141+             let  header_len = entry
142+                 . header 
143+                 . write_to ( bytes_copied,  & mut  header_buf. as_mut ( ) ) 
144+                 . map_err ( hasher:: io:: Error :: from) ?; 
142145            let  state = gix_features:: hash:: crc32_update ( 0 ,  & header_buf[ ..header_len] ) ; 
143146            Some ( gix_features:: hash:: crc32_update ( state,  & compressed) ) 
144147        }  else  { 
@@ -172,7 +175,7 @@ where
172175            let  mut  id = gix_hash:: ObjectId :: null ( self . object_hash ) ; 
173176            if  let  Err ( err)  = self . read . read_exact ( id. as_mut_slice ( ) )  { 
174177                if  self . mode  != input:: Mode :: Restore  { 
175-                     return  Err ( err. into ( ) ) ; 
178+                     return  Err ( input :: Error :: Io ( err. into ( ) ) ) ; 
176179                } 
177180            } 
178181
@@ -269,7 +272,8 @@ where
269272impl  crate :: data:: File  { 
270273    /// Returns an iterator over [`Entries`][crate::data::input::Entry], without making use of the memory mapping. 
271274pub  fn  streaming_iter ( & self )  -> Result < BytesToEntriesIter < impl  io:: BufRead > ,  input:: Error >  { 
272-         let  reader = io:: BufReader :: with_capacity ( 4096  *  8 ,  fs:: File :: open ( & self . path ) ?) ; 
275+         let  reader =
276+             io:: BufReader :: with_capacity ( 4096  *  8 ,  fs:: File :: open ( & self . path ) . map_err ( hasher:: io:: Error :: from) ?) ; 
273277        BytesToEntriesIter :: new_from_header ( 
274278            reader, 
275279            input:: Mode :: Verify , 
0 commit comments