mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-07 01:30:02 +00:00
indexer: introduce git_packfile_close
Encapsulation!
This commit is contained in:
parent
98f5387233
commit
bf339ab0ef
@ -1091,17 +1091,10 @@ void git_indexer_free(git_indexer *idx)
|
|||||||
|
|
||||||
git_vector_free_deep(&idx->deltas);
|
git_vector_free_deep(&idx->deltas);
|
||||||
|
|
||||||
/* Try to delete the temporary file in case it was not committed. */
|
|
||||||
git_mwindow_free_all(&idx->pack->mwf);
|
|
||||||
|
|
||||||
/* We need to close the descriptor here so Windows doesn't choke on unlink */
|
|
||||||
if (idx->pack->mwf.fd != -1)
|
|
||||||
p_close(idx->pack->mwf.fd);
|
|
||||||
|
|
||||||
if (!idx->pack_committed)
|
|
||||||
p_unlink(idx->pack->pack_name);
|
|
||||||
|
|
||||||
if (!git_mutex_lock(&git__mwindow_mutex)) {
|
if (!git_mutex_lock(&git__mwindow_mutex)) {
|
||||||
|
if (!idx->pack_committed)
|
||||||
|
git_packfile_close(idx->pack, true);
|
||||||
|
|
||||||
git_packfile_free(idx->pack);
|
git_packfile_free(idx->pack);
|
||||||
git_mutex_unlock(&git__mwindow_mutex);
|
git_mutex_unlock(&git__mwindow_mutex);
|
||||||
}
|
}
|
||||||
|
17
src/pack.c
17
src/pack.c
@ -991,6 +991,18 @@ git_off_t get_delta_base(
|
|||||||
*
|
*
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
|
|
||||||
|
void git_packfile_close(struct git_pack_file *p, bool unlink_packfile)
|
||||||
|
{
|
||||||
|
if (p->mwf.fd >= 0) {
|
||||||
|
git_mwindow_free_all_locked(&p->mwf);
|
||||||
|
p_close(p->mwf.fd);
|
||||||
|
p->mwf.fd = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unlink_packfile)
|
||||||
|
p_unlink(p->pack_name);
|
||||||
|
}
|
||||||
|
|
||||||
void git_packfile_free(struct git_pack_file *p)
|
void git_packfile_free(struct git_pack_file *p)
|
||||||
{
|
{
|
||||||
if (!p)
|
if (!p)
|
||||||
@ -998,10 +1010,7 @@ void git_packfile_free(struct git_pack_file *p)
|
|||||||
|
|
||||||
cache_free(&p->bases);
|
cache_free(&p->bases);
|
||||||
|
|
||||||
if (p->mwf.fd >= 0) {
|
git_packfile_close(p, false);
|
||||||
git_mwindow_free_all_locked(&p->mwf);
|
|
||||||
p_close(p->mwf.fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
pack_index_free(p);
|
pack_index_free(p);
|
||||||
|
|
||||||
|
@ -149,6 +149,7 @@ git_off_t get_delta_base(struct git_pack_file *p, git_mwindow **w_curs,
|
|||||||
git_off_t *curpos, git_otype type,
|
git_off_t *curpos, git_otype type,
|
||||||
git_off_t delta_obj_offset);
|
git_off_t delta_obj_offset);
|
||||||
|
|
||||||
|
void git_packfile_close(struct git_pack_file *p, bool unlink_packfile);
|
||||||
void git_packfile_free(struct git_pack_file *p);
|
void git_packfile_free(struct git_pack_file *p);
|
||||||
int git_packfile_alloc(struct git_pack_file **pack_out, const char *path);
|
int git_packfile_alloc(struct git_pack_file **pack_out, const char *path);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user