]> git.ipfire.org Git - thirdparty/git.git/blobdiff - ref-filter.c
hashmap_get_next returns "struct hashmap_entry *"
[thirdparty/git.git] / ref-filter.c
index 56528caafd59c90de18b9fa951cf45d64712d59d..d939ebc6bbc0bba52b7b109547a96e5b9ed74b55 100644 (file)
@@ -1565,9 +1565,10 @@ static void populate_worktree_map(struct hashmap *map, struct worktree **worktre
                        struct ref_to_worktree_entry *entry;
                        entry = xmalloc(sizeof(*entry));
                        entry->wt = worktrees[i];
-                       hashmap_entry_init(entry, strhash(worktrees[i]->head_ref));
+                       hashmap_entry_init(&entry->ent,
+                                       strhash(worktrees[i]->head_ref));
 
-                       hashmap_add(map, entry);
+                       hashmap_add(map, &entry->ent);
                }
        }
 }
@@ -2142,7 +2143,9 @@ static void free_array_item(struct ref_array_item *item)
 {
        free((char *)item->symref);
        if (item->value) {
-               free((char *)item->value->s);
+               int i;
+               for (i = 0; i < used_atom_cnt; i++)
+                       free((char *)item->value[i].s);
                free(item->value);
        }
        free(item);
@@ -2153,14 +2156,16 @@ void ref_array_clear(struct ref_array *array)
 {
        int i;
 
-       for (i = 0; i < used_atom_cnt; i++)
-               free((char *)used_atom[i].name);
-       FREE_AND_NULL(used_atom);
-       used_atom_cnt = 0;
        for (i = 0; i < array->nr; i++)
                free_array_item(array->items[i]);
        FREE_AND_NULL(array->items);
        array->nr = array->alloc = 0;
+
+       for (i = 0; i < used_atom_cnt; i++)
+               free((char *)used_atom[i].name);
+       FREE_AND_NULL(used_atom);
+       used_atom_cnt = 0;
+
        if (ref_to_worktree_map.worktrees) {
                hashmap_free(&(ref_to_worktree_map.map), 1);
                free_worktrees(ref_to_worktree_map.worktrees);