Jeff King <peff@xxxxxxxx> writes: > The find_commit_name() function passes an object_id.hash as the key of a > hashmap. That ends up in commit_name_neq(), which then feeds it to > oideq(). Which means we should actually be the whole "struct object_id". > > It works anyway because pointers to the two are interchangeable. And > because we're going through a layer of void pointers, the compiler > doesn't notice the type mismatch. Wow. Good eyes. I wouldn't have noticed this (and for the reasons you stated, it is very tricky for any clever compiler to notice it). Impressed. > But it's worth cleaning up (especially since once we switch away from > sha1hash() on the same line, accessing the hash member will look doubly > out of place). Yup. Thanks. > > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > builtin/describe.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/builtin/describe.c b/builtin/describe.c > index 1409cedce2..0a5cde00a2 100644 > --- a/builtin/describe.c > +++ b/builtin/describe.c > @@ -76,7 +76,7 @@ static int commit_name_neq(const void *unused_cmp_data, > > static inline struct commit_name *find_commit_name(const struct object_id *peeled) > { > - return hashmap_get_from_hash(&names, sha1hash(peeled->hash), peeled->hash); > + return hashmap_get_from_hash(&names, sha1hash(peeled->hash), peeled); > } > > static int replace_name(struct commit_name *e,