[PATCH 4/5] odb: use oidmap_clear_with_free() to release replace_map entries
- From
Seyi Kuforiji <kuforiji98@gmail.com>
- Date
- Feb 27, 2026, 23:42 UTC
- Message-ID
- <20260227234213.17633-5-kuforiji98@gmail.com>
- In-Reply-To
- <20260227234213.17633-1-kuforiji98@gmail.com>
From: Seyi Kufoiji <kuforiji98@gmail.com>
Replace the direct oidmap_clear() call in odb_free() with oidmap_clear_with_free(), and introduce a free_replace_map_entry() helper to properly free each struct replace_object stored in the map.
This centralizes cleanup logic and ensures entries are released correctly via a dedicated callback.
Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com> --- odb.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/odb.c b/odb.c index 1679cc0465..8ca497203f 100644 --- a/odb.c +++ b/odb.c @@ -14,6 +14,7 @@ #include "object-file-convert.h" #include "object-file.h" #include "odb.h" +#include "oidmap.h" #include "packfile.h" #include "path.h" #include "promisor-remote.h" @@ -1089,6 +1090,13 @@ void odb_close(struct object_database *o) close_commit_graph(o); } +static void free_replace_map_entry(void *e) +{ + struct replace_object *entry = + container_of(e, struct replace_object, original); + free(entry); +} + static void odb_free_sources(struct object_database *o) { while (o->sources) { @@ -1109,7 +1117,8 @@ void odb_free(struct object_database *o) free(o->alternate_db); - oidmap_clear(&o->replace_map, 1); + if (o->replace_map_initialized) + oidmap_clear_with_free(&o->replace_map, free_replace_map_entry); pthread_mutex_destroy(&o->replace_mutex); odb_close(o);
-- 2.43.0