Our C-based clone helper requires that the context be initialized, but
we neglect to do that in our Clone implementation for CryptoHasher.
This does not matter when using our default block SHA-256
implementation, but it does cause a crash when using OpenSSL as the
backend. Fix this by properly initializing the context before cloning
into it.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
impl Clone for CryptoHasher {
fn clone(&self) -> Self {
let ctx = unsafe { c::git_hash_alloc() };
- unsafe { c::git_hash_clone(ctx, self.ctx) };
+ unsafe {
+ c::git_hash_init(ctx, self.algo.hash_algo_ptr());
+ c::git_hash_clone(ctx, self.ctx)
+ };
Self {
algo: self.algo,
ctx,