diff options
Diffstat (limited to 'third_party/git/oidmap.c')
-rw-r--r-- | third_party/git/oidmap.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/third_party/git/oidmap.c b/third_party/git/oidmap.c index 423aa014a33e..6d6e840d0376 100644 --- a/third_party/git/oidmap.c +++ b/third_party/git/oidmap.c @@ -2,18 +2,14 @@ #include "oidmap.h" static int oidmap_neq(const void *hashmap_cmp_fn_data, - const struct hashmap_entry *e1, - const struct hashmap_entry *e2, + const void *entry, const void *entry_or_key, const void *keydata) { - const struct oidmap_entry *a, *b; - - a = container_of(e1, const struct oidmap_entry, internal_entry); - b = container_of(e2, const struct oidmap_entry, internal_entry); - + const struct oidmap_entry *entry_ = entry; if (keydata) - return !oideq(&a->oid, (const struct object_id *) keydata); - return !oideq(&a->oid, &b->oid); + return !oideq(&entry_->oid, (const struct object_id *) keydata); + return !oideq(&entry_->oid, + &((const struct oidmap_entry *) entry_or_key)->oid); } void oidmap_init(struct oidmap *map, size_t initial_size) @@ -25,9 +21,7 @@ void oidmap_free(struct oidmap *map, int free_entries) { if (!map) return; - - /* TODO: make oidmap itself not depend on struct layouts */ - hashmap_free_(&map->map, free_entries ? 0 : -1); + hashmap_free(&map->map, free_entries); } void *oidmap_get(const struct oidmap *map, const struct object_id *key) @@ -57,5 +51,5 @@ void *oidmap_put(struct oidmap *map, void *entry) oidmap_init(map, 0); hashmap_entry_init(&to_put->internal_entry, oidhash(&to_put->oid)); - return hashmap_put(&map->map, &to_put->internal_entry); + return hashmap_put(&map->map, to_put); } |