summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mwindow.c5
-rw-r--r--src/pack.c6
2 files changed, 7 insertions, 4 deletions
diff --git a/src/mwindow.c b/src/mwindow.c
index 0d6535056..a03a6597e 100644
--- a/src/mwindow.c
+++ b/src/mwindow.c
@@ -67,6 +67,7 @@ int git_mwindow_get_pack(struct git_pack_file **out, const char *path)
if (git_mwindow_files_init() < 0) {
git_mutex_unlock(&git__mwindow_mutex);
+ git__free(packname);
return -1;
}
@@ -93,8 +94,10 @@ int git_mwindow_get_pack(struct git_pack_file **out, const char *path)
git_strmap_insert(git__pack_cache, pack->pack_name, pack, error);
git_mutex_unlock(&git__mwindow_mutex);
- if (error < 0)
+ if (error < 0) {
+ git_packfile_free(pack);
return -1;
+ }
*out = pack;
return 0;
diff --git a/src/pack.c b/src/pack.c
index 767efb6c3..22dbd5647 100644
--- a/src/pack.c
+++ b/src/pack.c
@@ -968,10 +968,10 @@ void git_packfile_free(struct git_pack_file *p)
cache_free(&p->bases);
- git_mwindow_free_all_locked(&p->mwf);
-
- if (p->mwf.fd >= 0)
+ if (p->mwf.fd >= 0) {
+ git_mwindow_free_all_locked(&p->mwf);
p_close(p->mwf.fd);
+ }
pack_index_free(p);