1
1
use std:: { fs, io} ;
2
2
3
3
use gix_features:: zlib:: Decompress ;
4
- use gix_hash:: { Hasher , ObjectId } ;
4
+ use gix_hash:: { hasher , Hasher , ObjectId } ;
5
5
6
6
use crate :: data:: input;
7
7
52
52
object_hash : gix_hash:: Kind ,
53
53
) -> Result < BytesToEntriesIter < BR > , input:: Error > {
54
54
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 ) ?;
56
56
57
57
let ( version, num_objects) = crate :: data:: header:: decode ( & header_data) ?;
58
58
assert_eq ! (
97
97
}
98
98
None => crate :: data:: Entry :: from_read ( & mut self . read , self . offset , self . hash_len ) ,
99
99
}
100
- . map_err ( input :: Error :: from) ?;
100
+ . map_err ( hasher :: io :: Error :: from) ?;
101
101
102
102
// Decompress object to learn its compressed bytes
103
103
let compressed_buf = self . compressed_buf . take ( ) . unwrap_or_else ( || Vec :: with_capacity ( 4096 ) ) ;
@@ -114,7 +114,7 @@ where
114
114
decompressor : & mut self . decompressor ,
115
115
} ;
116
116
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 ) ?;
118
118
if bytes_copied != entry. decompressed_size {
119
119
return Err ( input:: Error :: IncompletePack {
120
120
actual : bytes_copied,
@@ -138,7 +138,10 @@ where
138
138
139
139
let crc32 = if self . compressed . crc32 ( ) {
140
140
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) ?;
142
145
let state = gix_features:: hash:: crc32_update ( 0 , & header_buf[ ..header_len] ) ;
143
146
Some ( gix_features:: hash:: crc32_update ( state, & compressed) )
144
147
} else {
@@ -172,7 +175,7 @@ where
172
175
let mut id = gix_hash:: ObjectId :: null ( self . object_hash ) ;
173
176
if let Err ( err) = self . read . read_exact ( id. as_mut_slice ( ) ) {
174
177
if self . mode != input:: Mode :: Restore {
175
- return Err ( err. into ( ) ) ;
178
+ return Err ( input :: Error :: Io ( err. into ( ) ) ) ;
176
179
}
177
180
}
178
181
@@ -269,7 +272,8 @@ where
269
272
impl crate :: data:: File {
270
273
/// Returns an iterator over [`Entries`][crate::data::input::Entry], without making use of the memory mapping.
271
274
pub 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) ?) ;
273
277
BytesToEntriesIter :: new_from_header (
274
278
reader,
275
279
input:: Mode :: Verify ,
0 commit comments