builtin/commit: fix leaking change data contents
While we free the worktree change data, we never free its contents. Fix this. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
3b373150c8
commit
d34b5cbf02
|
@ -728,6 +728,13 @@ static void prepare_amend_commit(struct commit *commit, struct strbuf *sb,
|
||||||
repo_unuse_commit_buffer(the_repository, commit, buffer);
|
repo_unuse_commit_buffer(the_repository, commit, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void change_data_free(void *util, const char *str UNUSED)
|
||||||
|
{
|
||||||
|
struct wt_status_change_data *d = util;
|
||||||
|
free(d->rename_source);
|
||||||
|
free(d);
|
||||||
|
}
|
||||||
|
|
||||||
static int prepare_to_commit(const char *index_file, const char *prefix,
|
static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||||
struct commit *current_head,
|
struct commit *current_head,
|
||||||
struct wt_status *s,
|
struct wt_status *s,
|
||||||
|
@ -991,7 +998,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||||
s->use_color = 0;
|
s->use_color = 0;
|
||||||
committable = run_status(s->fp, index_file, prefix, 1, s);
|
committable = run_status(s->fp, index_file, prefix, 1, s);
|
||||||
s->use_color = saved_color_setting;
|
s->use_color = saved_color_setting;
|
||||||
string_list_clear(&s->change, 1);
|
string_list_clear_func(&s->change, change_data_free);
|
||||||
} else {
|
} else {
|
||||||
struct object_id oid;
|
struct object_id oid;
|
||||||
const char *parent = "HEAD";
|
const char *parent = "HEAD";
|
||||||
|
|
|
@ -7,6 +7,7 @@ test_description='git commit
|
||||||
|
|
||||||
Tests for template, signoff, squash and -F functions.'
|
Tests for template, signoff, squash and -F functions.'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
. "$TEST_DIRECTORY"/lib-rebase.sh
|
. "$TEST_DIRECTORY"/lib-rebase.sh
|
||||||
|
|
Loading…
Reference in New Issue