mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-12 18:49:38 +00:00
Merge pull request #3447 from arthurschreiber/arthur/fix-odb-refdb-free
refdb and odb backends must provide `free` function
This commit is contained in:
commit
a99f33e9b0
@ -83,6 +83,10 @@ struct git_odb_backend {
|
|||||||
git_odb_writepack **, git_odb_backend *, git_odb *odb,
|
git_odb_writepack **, git_odb_backend *, git_odb *odb,
|
||||||
git_transfer_progress_cb progress_cb, void *progress_payload);
|
git_transfer_progress_cb progress_cb, void *progress_payload);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frees any resources held by the odb (including the `git_odb_backend`
|
||||||
|
* itself). An odb backend implementation must provide this function.
|
||||||
|
*/
|
||||||
void (* free)(git_odb_backend *);
|
void (* free)(git_odb_backend *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -130,8 +130,8 @@ struct git_refdb_backend {
|
|||||||
int (*ensure_log)(git_refdb_backend *backend, const char *refname);
|
int (*ensure_log)(git_refdb_backend *backend, const char *refname);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frees any resources held by the refdb. A refdb implementation may
|
* Frees any resources held by the refdb (including the `git_refdb_backend`
|
||||||
* provide this function; if it is not provided, nothing will be done.
|
* itself). A refdb backend implementation must provide this function.
|
||||||
*/
|
*/
|
||||||
void (*free)(git_refdb_backend *backend);
|
void (*free)(git_refdb_backend *backend);
|
||||||
|
|
||||||
|
@ -600,8 +600,7 @@ static void odb_free(git_odb *db)
|
|||||||
backend_internal *internal = git_vector_get(&db->backends, i);
|
backend_internal *internal = git_vector_get(&db->backends, i);
|
||||||
git_odb_backend *backend = internal->backend;
|
git_odb_backend *backend = internal->backend;
|
||||||
|
|
||||||
if (backend->free) backend->free(backend);
|
backend->free(backend);
|
||||||
else git__free(backend);
|
|
||||||
|
|
||||||
git__free(internal);
|
git__free(internal);
|
||||||
}
|
}
|
||||||
|
@ -61,12 +61,8 @@ int git_refdb_open(git_refdb **out, git_repository *repo)
|
|||||||
|
|
||||||
static void refdb_free_backend(git_refdb *db)
|
static void refdb_free_backend(git_refdb *db)
|
||||||
{
|
{
|
||||||
if (db->backend) {
|
if (db->backend)
|
||||||
if (db->backend->free)
|
|
||||||
db->backend->free(db->backend);
|
db->backend->free(db->backend);
|
||||||
else
|
|
||||||
git__free(db->backend);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_refdb_set_backend(git_refdb *db, git_refdb_backend *backend)
|
int git_refdb_set_backend(git_refdb *db, git_refdb_backend *backend)
|
||||||
|
@ -14,6 +14,7 @@ static git_odb_backend *new_backend(size_t position)
|
|||||||
if (b == NULL)
|
if (b == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
b->base.free = (void (*)(git_odb_backend *)) git__free;
|
||||||
b->base.version = GIT_ODB_BACKEND_VERSION;
|
b->base.version = GIT_ODB_BACKEND_VERSION;
|
||||||
b->position = position;
|
b->position = position;
|
||||||
return (git_odb_backend *)b;
|
return (git_odb_backend *)b;
|
||||||
|
Loading…
Reference in New Issue
Block a user