summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrian m. carlson <sandals@crustytoothpaste.net>2018-05-02 00:25:29 +0000
committerJunio C Hamano <gitster@pobox.com>2018-05-02 13:59:48 +0900
commit69d124255ede771ff8162652762406c55ba491c0 (patch)
tree3249ee68c31622d295b8086a435acffe8441d045
parentfe0a9eaf31dd0c349ae4308498c33a5c3794b293 (diff)
downloadgit-69d124255ede771ff8162652762406c55ba491c0.tar.gz
cache: add a function to read an object ID from a buffer
In various places throughout the codebase, we need to read data into a struct object_id from a pack or other unsigned char buffer. Add an inline function that does this based on the current hash algorithm in use, and use it in several places. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--cache-tree.c2
-rw-r--r--cache.h5
-rw-r--r--resolve-undo.c2
3 files changed, 7 insertions, 2 deletions
diff --git a/cache-tree.c b/cache-tree.c
index 6a555f4d43..8c7e1258a4 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -523,7 +523,7 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p)
if (0 <= it->entry_count) {
if (size < rawsz)
goto free_return;
- memcpy(it->oid.hash, (const unsigned char*)buf, rawsz);
+ oidread(&it->oid, (const unsigned char *)buf);
buf += rawsz;
size -= rawsz;
}
diff --git a/cache.h b/cache.h
index bbaf5c349a..4bca177cf3 100644
--- a/cache.h
+++ b/cache.h
@@ -1008,6 +1008,11 @@ static inline void oidclr(struct object_id *oid)
memset(oid->hash, 0, GIT_MAX_RAWSZ);
}
+static inline void oidread(struct object_id *oid, const unsigned char *hash)
+{
+ memcpy(oid->hash, hash, the_hash_algo->rawsz);
+}
+
#define EMPTY_TREE_SHA1_HEX \
"4b825dc642cb6eb9a060e54bf8d69288fbee4904"
diff --git a/resolve-undo.c b/resolve-undo.c
index aed95b4b35..fc5b3b83d9 100644
--- a/resolve-undo.c
+++ b/resolve-undo.c
@@ -90,7 +90,7 @@ struct string_list *resolve_undo_read(const char *data, unsigned long size)
continue;
if (size < rawsz)
goto error;
- memcpy(ui->oid[i].hash, (const unsigned char *)data, rawsz);
+ oidread(&ui->oid[i], (const unsigned char *)data);
size -= rawsz;
data += rawsz;
}