path: root/csum-file.c
diff options
authorbrian m. carlson <>2020-02-22 20:17:27 (GMT)
committerJunio C Hamano <>2020-02-24 17:33:21 (GMT)
commit768e30ea27c58aa69893e10b96ba5ba5680dc3cf (patch)
treeeed6e6b8db5bcef9ee99aa7e1fd675da3e6e7e54 /csum-file.c
parent207899137dd75916f65bb9988ccf0559760427d6 (diff)
hash: implement and use a context cloning function
For all of our SHA-1 implementations and most of our SHA-256 implementations, the hash context we use is a real struct. For these implementations, it's possible to copy a hash context by making a copy of the struct. However, for our libgcrypt implementation, our hash context is a pointer. Consequently, copying it does not lead to an independent hash context like we intended. Fortunately, however, libgcrypt provides us with a handy function to copy hash contexts. Let's add a cloning function to the hash algorithm API, and use it in the one place we need to make a hash context copy. With this change, our libgcrypt SHA-256 implementation is fully functional with all of our other hash implementations. Signed-off-by: brian m. carlson <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'csum-file.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/csum-file.c b/csum-file.c
index 53ce37f..0f35fa5 100644
--- a/csum-file.c
+++ b/csum-file.c
@@ -157,7 +157,7 @@ void hashfile_checkpoint(struct hashfile *f, struct hashfile_checkpoint *checkpo
checkpoint->offset = f->total;
- checkpoint->ctx = f->ctx;
+ the_hash_algo->clone_fn(&checkpoint->ctx, &f->ctx);
int hashfile_truncate(struct hashfile *f, struct hashfile_checkpoint *checkpoint)