Browse Source

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>
maint
brian m. carlson 7 years ago committed by Junio C Hamano
parent
commit
69d124255e
  1. 2
      cache-tree.c
  2. 5
      cache.h
  3. 2
      resolve-undo.c

2
cache-tree.c

@ -523,7 +523,7 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p) @@ -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;
}

5
cache.h

@ -1008,6 +1008,11 @@ static inline void oidclr(struct object_id *oid) @@ -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"

2
resolve-undo.c

@ -90,7 +90,7 @@ struct string_list *resolve_undo_read(const char *data, unsigned long size) @@ -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;
}

Loading…
Cancel
Save