diff options
author | Eric Wong <e@80x24.org> | 2019-10-06 23:30:38 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-10-07 10:20:11 +0900 |
commit | 87571c3f71ba41d89eef5202f8589daa26f984ca (patch) | |
tree | d3b072917efce49f3f95d7d48763a8dfc83ef211 /revision.c | |
parent | hashmap_cmp_fn takes hashmap_entry params (diff) | |
download | tgif-87571c3f71ba41d89eef5202f8589daa26f984ca.tar.xz |
hashmap: use *_entry APIs for iteration
Inspired by list_for_each_entry in the Linux kernel.
Once again, these are somewhat compromised usability-wise
by compilers lacking __typeof__ support.
Signed-off-by: Eric Wong <e@80x24.org>
Reviewed-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/revision.c b/revision.c index f32fbc5e2e..f28cbe5de8 100644 --- a/revision.c +++ b/revision.c @@ -128,9 +128,10 @@ static void paths_and_oids_clear(struct hashmap *map) { struct hashmap_iter iter; struct path_and_oids_entry *entry; - hashmap_iter_init(map, &iter); - while ((entry = (struct path_and_oids_entry *)hashmap_iter_next(&iter))) { + hashmap_for_each_entry(map, &iter, entry, + struct path_and_oids_entry, + ent /* member name */) { oidset_clear(&entry->trees); free(entry->path); } @@ -242,8 +243,9 @@ void mark_trees_uninteresting_sparse(struct repository *r, add_children_by_path(r, tree, &map); } - hashmap_iter_init(&map, &map_iter); - while ((entry = hashmap_iter_next(&map_iter))) + hashmap_for_each_entry(&map, &map_iter, entry, + struct path_and_oids_entry, + ent /* member name */) mark_trees_uninteresting_sparse(r, &entry->trees); paths_and_oids_clear(&map); |