From be343b88c724491bcb945cafec9f95370eb1088f Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Mon, 1 May 2017 18:56:55 +0100 Subject: worktrees: cleanup some memory leaks Be sure to clean up looked up references. Free buffers instead of merely clearing them. Use `git__free` instead of `free`. --- src/branch.c | 10 ++++++---- src/refs.c | 4 ++-- src/repository.c | 3 ++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/branch.c b/src/branch.c index 7a83b83af..fe4955ad6 100644 --- a/src/branch.c +++ b/src/branch.c @@ -130,14 +130,16 @@ int git_branch_create_from_annotated( static int branch_equals(git_repository *repo, const char *path, void *payload) { git_reference *branch = (git_reference *) payload; - git_reference *head; - int equal; + git_reference *head = NULL; + int equal = 0; if (git_reference__read_head(&head, repo, path) < 0 || - git_reference_type(head) != GIT_REF_SYMBOLIC) - return 0; + git_reference_type(head) != GIT_REF_SYMBOLIC) + goto done; equal = !git__strcmp(head->target.symbolic, branch->name); + +done: git_reference_free(head); return equal; } diff --git a/src/refs.c b/src/refs.c index 31410b75f..632a5299c 100644 --- a/src/refs.c +++ b/src/refs.c @@ -277,8 +277,8 @@ int git_reference__read_head( } out: - free(name); - git_buf_clear(&reference); + git__free(name); + git_buf_free(&reference); return error; } diff --git a/src/repository.c b/src/repository.c index 707b7b7bd..f8d19eb35 100644 --- a/src/repository.c +++ b/src/repository.c @@ -2132,7 +2132,8 @@ int git_repository_head_for_worktree(git_reference **out, git_repository *repo, out: if (error) git_reference_free(head); - git_buf_clear(&path); + + git_buf_free(&path); return error; } -- cgit v1.2.1