diff options
| author | Junio C Hamano <gitster@pobox.com> | 2025-05-19 16:02:47 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-05-19 16:02:47 -0700 |
| commit | a9dcacbf2a74537916f61dd8c5f2dd2c1b4eb58a (patch) | |
| tree | 1e9684531b97a24571f1f977137fe42b5bab69f7 | |
| parent | Merge branch 'rc/t1001-test-path-is-file' (diff) | |
| parent | raw_object_store: drop extra pointer to replace_map (diff) | |
| download | git-a9dcacbf2a74537916f61dd8c5f2dd2c1b4eb58a.tar.gz git-a9dcacbf2a74537916f61dd8c5f2dd2c1b4eb58a.zip | |
Merge branch 'jk/oidmap-cleanup'
Code cleanup.
* jk/oidmap-cleanup:
raw_object_store: drop extra pointer to replace_map
oidmap: add size function
oidmap: rename oidmap_free() to oidmap_clear()
| -rw-r--r-- | builtin/rev-list.c | 2 | ||||
| -rw-r--r-- | commit-graph.c | 2 | ||||
| -rw-r--r-- | list-objects-filter.c | 2 | ||||
| -rw-r--r-- | object-store.c | 3 | ||||
| -rw-r--r-- | object-store.h | 3 | ||||
| -rw-r--r-- | oidmap.c | 2 | ||||
| -rw-r--r-- | oidmap.h | 9 | ||||
| -rw-r--r-- | replace-object.c | 8 | ||||
| -rw-r--r-- | replace-object.h | 2 | ||||
| -rw-r--r-- | sequencer.c | 4 | ||||
| -rw-r--r-- | t/unit-tests/u-oidmap.c | 2 |
11 files changed, 21 insertions, 18 deletions
diff --git a/builtin/rev-list.c b/builtin/rev-list.c index c4cd4ed5c8..0984b607bf 100644 --- a/builtin/rev-list.c +++ b/builtin/rev-list.c @@ -924,7 +924,7 @@ int cmd_rev_list(int argc, free((void *)entry->path); } - oidmap_free(&missing_objects, true); + oidmap_clear(&missing_objects, true); } stop_progress(&progress); diff --git a/commit-graph.c b/commit-graph.c index 6394752b0b..4a6e34f8a0 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -222,7 +222,7 @@ static int commit_graph_compatible(struct repository *r) if (replace_refs_enabled(r)) { prepare_replace_object(r); - if (hashmap_get_size(&r->objects->replace_map->map)) + if (oidmap_get_size(&r->objects->replace_map)) return 0; } diff --git a/list-objects-filter.c b/list-objects-filter.c index 7765761b3c..78b397bc19 100644 --- a/list-objects-filter.c +++ b/list-objects-filter.c @@ -244,7 +244,7 @@ static void filter_trees_free(void *filter_data) { struct filter_trees_depth_data *d = filter_data; if (!d) return; - oidmap_free(&d->seen_at_depth, 1); + oidmap_clear(&d->seen_at_depth, 1); free(d); } diff --git a/object-store.c b/object-store.c index 2f51d0e3b0..517f1fd145 100644 --- a/object-store.c +++ b/object-store.c @@ -987,8 +987,7 @@ void raw_object_store_clear(struct raw_object_store *o) { FREE_AND_NULL(o->alternate_db); - oidmap_free(o->replace_map, 1); - FREE_AND_NULL(o->replace_map); + oidmap_clear(&o->replace_map, 1); pthread_mutex_destroy(&o->replace_mutex); free_commit_graph(o->commit_graph); diff --git a/object-store.h b/object-store.h index c2fe5a1960..141b801113 100644 --- a/object-store.h +++ b/object-store.h @@ -5,6 +5,7 @@ #include "object.h" #include "list.h" #include "oidset.h" +#include "oidmap.h" #include "thread-utils.h" struct oidmap; @@ -109,7 +110,7 @@ struct raw_object_store { * Objects that should be substituted by other objects * (see git-replace(1)). */ - struct oidmap *replace_map; + struct oidmap replace_map; unsigned replace_map_initialized : 1; pthread_mutex_t replace_mutex; /* protect object replace functions */ @@ -22,7 +22,7 @@ void oidmap_init(struct oidmap *map, size_t initial_size) hashmap_init(&map->map, oidmap_neq, NULL, initial_size); } -void oidmap_free(struct oidmap *map, int free_entries) +void oidmap_clear(struct oidmap *map, int free_entries) { if (!map) return; @@ -36,12 +36,13 @@ struct oidmap { void oidmap_init(struct oidmap *map, size_t initial_size); /* - * Frees an oidmap structure and allocated memory. + * Clear an oidmap, freeing any allocated memory. The map is empty and + * can be reused without another explicit init. * * If `free_entries` is true, each oidmap_entry in the map is freed as well * using stdlibs free(). */ -void oidmap_free(struct oidmap *map, int free_entries); +void oidmap_clear(struct oidmap *map, int free_entries); /* * Returns the oidmap entry for the specified oid, or NULL if not found. @@ -66,6 +67,10 @@ void *oidmap_put(struct oidmap *map, void *entry); */ void *oidmap_remove(struct oidmap *map, const struct object_id *key); +static inline unsigned int oidmap_get_size(struct oidmap *map) +{ + return hashmap_get_size(&map->map); +} struct oidmap_iter { struct hashmap_iter h_iter; diff --git a/replace-object.c b/replace-object.c index 7b8a09b5cb..f8c5f68837 100644 --- a/replace-object.c +++ b/replace-object.c @@ -31,7 +31,7 @@ static int register_replace_ref(const char *refname, oidcpy(&repl_obj->replacement, oid); /* Register new object */ - if (oidmap_put(r->objects->replace_map, repl_obj)) + if (oidmap_put(&r->objects->replace_map, repl_obj)) die(_("duplicate replace ref: %s"), refname); return 0; @@ -48,9 +48,7 @@ void prepare_replace_object(struct repository *r) return; } - r->objects->replace_map = - xmalloc(sizeof(*r->objects->replace_map)); - oidmap_init(r->objects->replace_map, 0); + oidmap_init(&r->objects->replace_map, 0); refs_for_each_replace_ref(get_main_ref_store(r), register_replace_ref, r); @@ -80,7 +78,7 @@ const struct object_id *do_lookup_replace_object(struct repository *r, /* Try to recursively replace the object */ while (depth-- > 0) { struct replace_object *repl_obj = - oidmap_get(r->objects->replace_map, cur); + oidmap_get(&r->objects->replace_map, cur); if (!repl_obj) return cur; cur = &repl_obj->replacement; diff --git a/replace-object.h b/replace-object.h index ba478eb30c..3052e96a62 100644 --- a/replace-object.h +++ b/replace-object.h @@ -47,7 +47,7 @@ static inline const struct object_id *lookup_replace_object(struct repository *r { if (!replace_refs_enabled(r) || (r->objects->replace_map_initialized && - r->objects->replace_map->map.tablesize == 0)) + oidmap_get_size(&r->objects->replace_map) == 0)) return oid; return do_lookup_replace_object(r, oid); } diff --git a/sequencer.c b/sequencer.c index 4e77da475c..4edf66fb28 100644 --- a/sequencer.c +++ b/sequencer.c @@ -6051,8 +6051,8 @@ static int make_script_with_merges(struct pretty_print_context *pp, oidset_clear(&interesting); oidset_clear(&child_seen); oidset_clear(&shown); - oidmap_free(&commit2todo, 1); - oidmap_free(&state.commit2label, 1); + oidmap_clear(&commit2todo, 1); + oidmap_clear(&state.commit2label, 1); hashmap_clear_and_free(&state.labels, struct labels_entry, entry); strbuf_release(&state.buf); diff --git a/t/unit-tests/u-oidmap.c b/t/unit-tests/u-oidmap.c index dc805b7e3c..b23af449f6 100644 --- a/t/unit-tests/u-oidmap.c +++ b/t/unit-tests/u-oidmap.c @@ -35,7 +35,7 @@ void test_oidmap__initialize(void) void test_oidmap__cleanup(void) { - oidmap_free(&map, 1); + oidmap_clear(&map, 1); } void test_oidmap__replace(void) |
