@@ -10,7 +10,7 @@ use anyhow::{bail, Context, Result};
1010use zstd:: Encoder ;
1111
1212use crate :: {
13- fsverity:: { FsVerityHashValue , Sha256HashValue } ,
13+ fsverity:: Sha256HashValue ,
1414 repository:: Repository ,
1515 splitstream:: {
1616 DigestMap , EnsureObjectMessages , FinishMessage , ResultChannelSender ,
@@ -198,15 +198,19 @@ impl ZstdWriter {
198198 Ok ( self . writer . write_all ( data) ?)
199199 }
200200
201+ pub ( crate ) fn update_sha ( & mut self , data : & [ u8 ] ) {
202+ if let Some ( ( sha256, ..) ) = & mut self . sha256_builder {
203+ sha256. update ( & data) ;
204+ }
205+ }
206+
201207 /// Writes all the data in `inline_content`, updating the internal SHA
202208 pub ( crate ) fn flush_inline ( & mut self , inline_content : & Vec < u8 > ) -> Result < ( ) > {
203209 if inline_content. is_empty ( ) {
204210 return Ok ( ( ) ) ;
205211 }
206212
207- if let Some ( ( sha256, ..) ) = & mut self . sha256_builder {
208- sha256. update ( & inline_content) ;
209- }
213+ self . update_sha ( inline_content) ;
210214
211215 self . write_fragment ( inline_content. len ( ) , & inline_content) ?;
212216
@@ -263,8 +267,6 @@ impl ZstdWriter {
263267 pub ( crate ) fn finalize_sha256_builder ( & mut self ) -> Result < Sha256HashValue > {
264268 let sha256_builder = std:: mem:: replace ( & mut self . sha256_builder , None ) ;
265269
266- let mut sha = Sha256HashValue :: EMPTY ;
267-
268270 if let Some ( ( context, expected) ) = sha256_builder {
269271 let final_sha = Into :: < Sha256HashValue > :: into ( context. finalize ( ) ) ;
270272
@@ -276,10 +278,10 @@ impl ZstdWriter {
276278 ) ;
277279 }
278280
279- sha = final_sha;
281+ return Ok ( final_sha) ;
280282 }
281283
282- return Ok ( sha ) ;
284+ bail ! ( "SHA not enabled for writer" ) ;
283285 }
284286
285287 /// Calls `finish` on the internal writer
0 commit comments