Skip to content

Commit be343b8

Browse files
committed
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`.
1 parent 13c1bf0 commit be343b8

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

src/branch.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,16 @@ int git_branch_create_from_annotated(
130130
static int branch_equals(git_repository *repo, const char *path, void *payload)
131131
{
132132
git_reference *branch = (git_reference *) payload;
133-
git_reference *head;
134-
int equal;
133+
git_reference *head = NULL;
134+
int equal = 0;
135135

136136
if (git_reference__read_head(&head, repo, path) < 0 ||
137-
git_reference_type(head) != GIT_REF_SYMBOLIC)
138-
return 0;
137+
git_reference_type(head) != GIT_REF_SYMBOLIC)
138+
goto done;
139139

140140
equal = !git__strcmp(head->target.symbolic, branch->name);
141+
142+
done:
141143
git_reference_free(head);
142144
return equal;
143145
}

src/refs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,8 @@ int git_reference__read_head(
277277
}
278278

279279
out:
280-
free(name);
281-
git_buf_clear(&reference);
280+
git__free(name);
281+
git_buf_free(&reference);
282282

283283
return error;
284284
}

src/repository.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2132,7 +2132,8 @@ int git_repository_head_for_worktree(git_reference **out, git_repository *repo,
21322132
out:
21332133
if (error)
21342134
git_reference_free(head);
2135-
git_buf_clear(&path);
2135+
2136+
git_buf_free(&path);
21362137

21372138
return error;
21382139
}

0 commit comments

Comments
 (0)