hash: make is_null_oid() independent of the_repository

The function `is_null_oid()` uses `oideq(oid, null_oid())` to check
whether a given object ID is the all-zero object ID. `null_oid()`
implicitly relies on `the_repository` though to return the correct null
object ID.

Get rid of this dependency by always comparing the complete hash array
for being all-zeroes. This is possible due to the refactoring of object
IDs so that their hash arrays are always fully initialized.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2024-06-14 08:50:08 +02:00
committed by Junio C Hamano
parent d4d364b2c7
commit 861e8c76f6
2 changed files with 6 additions and 5 deletions

View File

@@ -341,6 +341,12 @@ static inline unsigned int oidhash(const struct object_id *oid)
return hash;
}
static inline int is_null_oid(const struct object_id *oid)
{
static const unsigned char null_hash[GIT_MAX_RAWSZ];
return !memcmp(oid->hash, null_hash, GIT_MAX_RAWSZ);
}
const char *empty_tree_oid_hex(void);
const char *empty_blob_oid_hex(void);

5
hash.h
View File

@@ -6,11 +6,6 @@
#define the_hash_algo the_repository->hash_algo
static inline int is_null_oid(const struct object_id *oid)
{
return oideq(oid, null_oid());
}
static inline int is_empty_blob_oid(const struct object_id *oid)
{
return oideq(oid, the_hash_algo->empty_blob);