mirror of
https://github.com/git/git.git
synced 2026-03-05 06:57:37 +01:00
odb: use oidmap_clear_with_free() to release replace_map entries
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
6ff1507b1e
commit
bbf4b4b6db
11
odb.c
11
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);
|
||||
|
||||
Reference in New Issue
Block a user