From e2a5a028c778febb6776da16ab18fb4de79014f0 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 22 Dec 2017 15:27:29 -0800 Subject: oidmap: ensure map is initialized Ensure that an oidmap is initialized before attempting to add, remove, or retrieve an entry by simply performing the initialization step before accessing the underlying hashmap. Signed-off-by: Brandon Williams Signed-off-by: Junio C Hamano --- oidmap.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/oidmap.c b/oidmap.c index 6db4fffcdb..d9fb19ba6a 100644 --- a/oidmap.c +++ b/oidmap.c @@ -33,12 +33,19 @@ void oidmap_free(struct oidmap *map, int free_entries) void *oidmap_get(const struct oidmap *map, const struct object_id *key) { + if (!map->map.cmpfn) + return NULL; + return hashmap_get_from_hash(&map->map, hash(key), key); } void *oidmap_remove(struct oidmap *map, const struct object_id *key) { struct hashmap_entry entry; + + if (!map->map.cmpfn) + oidmap_init(map, 0); + hashmap_entry_init(&entry, hash(key)); return hashmap_remove(&map->map, &entry, key); } @@ -46,6 +53,10 @@ void *oidmap_remove(struct oidmap *map, const struct object_id *key) void *oidmap_put(struct oidmap *map, void *entry) { struct oidmap_entry *to_put = entry; + + if (!map->map.cmpfn) + oidmap_init(map, 0); + hashmap_entry_init(&to_put->internal_entry, hash(&to_put->oid)); return hashmap_put(&map->map, to_put); } -- cgit v1.2.1