diff options
author | brian m. carlson <sandals@crustytoothpaste.net> | 2020-02-22 20:17:27 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-02-24 09:33:21 -0800 |
commit | 768e30ea27c58aa69893e10b96ba5ba5680dc3cf (patch) | |
tree | eed6e6b8db5bcef9ee99aa7e1fd675da3e6e7e54 /csum-file.c | |
parent | 207899137dd75916f65bb9988ccf0559760427d6 (diff) | |
download | git-768e30ea27c58aa69893e10b96ba5ba5680dc3cf.tar.gz |
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 <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'csum-file.c')
-rw-r--r-- | csum-file.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/csum-file.c b/csum-file.c index 53ce37f7ca..0f35fa5ee4 100644 --- a/csum-file.c +++ b/csum-file.c @@ -157,7 +157,7 @@ void hashfile_checkpoint(struct hashfile *f, struct hashfile_checkpoint *checkpo { hashflush(f); 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) |