mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-06 07:00:27 +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);
|
||||
|
||||
/* 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 (!idx->pack_committed)
|
||||
git_packfile_close(idx->pack, true);
|
||||
|
||||
git_packfile_free(idx->pack);
|
||||
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)
|
||||
{
|
||||
if (!p)
|
||||
@ -998,10 +1010,7 @@ void git_packfile_free(struct git_pack_file *p)
|
||||
|
||||
cache_free(&p->bases);
|
||||
|
||||
if (p->mwf.fd >= 0) {
|
||||
git_mwindow_free_all_locked(&p->mwf);
|
||||
p_close(p->mwf.fd);
|
||||
}
|
||||
git_packfile_close(p, false);
|
||||
|
||||
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 delta_obj_offset);
|
||||
|
||||
void git_packfile_close(struct git_pack_file *p, bool unlink_packfile);
|
||||
void git_packfile_free(struct git_pack_file *p);
|
||||
int git_packfile_alloc(struct git_pack_file **pack_out, const char *path);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user