Merge pull request #4635 from tiennou/fix/leaks-v0.27.1 Leak fixes for v0.27.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
diff --git a/src/remote.c b/src/remote.c
index 4d675af..d8a6b99 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -237,7 +237,7 @@ static int create_internal(git_remote **out, git_repository *repo, const char *n
goto on_error;
/* only write for non-anonymous remotes */
- if (name && (error = write_add_refspec(repo, name, fetch, true)) < 0)
+ if (repo && name && (error = write_add_refspec(repo, name, fetch, true)) < 0)
goto on_error;
if (repo && (error = lookup_remote_prune_config(remote, config_ro, name)) < 0)
diff --git a/src/transports/local.c b/src/transports/local.c
index 0178407..541c552 100644
--- a/src/transports/local.c
+++ b/src/transports/local.c
@@ -512,8 +512,10 @@ static int foreach_reference_cb(git_reference *reference, void *payload)
git_revwalk *walk = (git_revwalk *)payload;
int error;
- if (git_reference_type(reference) != GIT_REF_OID)
+ if (git_reference_type(reference) != GIT_REF_OID) {
+ git_reference_free(reference);
return 0;
+ }
error = git_revwalk_hide(walk, git_reference_target(reference));
/* The reference is in the local repository, so the target may not
diff --git a/src/worktree.c b/src/worktree.c
index b15cd53..2bfb1ab 100644
--- a/src/worktree.c
+++ b/src/worktree.c
@@ -131,7 +131,7 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
goto out;
}
- if ((wt = git__calloc(1, sizeof(struct git_repository))) == NULL) {
+ if ((wt = git__calloc(1, sizeof(*wt))) == NULL) {
error = -1;
goto out;
}