From: Elijah Newren Date: Mon, 27 Sep 2021 16:33:39 +0000 (+0000) Subject: checkout, read-tree: fix leak of unpack_trees_options.dir X-Git-Tag: v2.34.0-rc0~63^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c512d27e787e9eb325731ab6aa7ac126f8cf6126;p=thirdparty%2Fgit.git checkout, read-tree: fix leak of unpack_trees_options.dir Signed-off-by: Elijah Newren Signed-off-by: Junio C Hamano --- diff --git a/builtin/checkout.c b/builtin/checkout.c index 8c69dcdf72..5335435d61 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -760,6 +760,10 @@ static int merge_working_tree(const struct checkout_opts *opts, init_tree_desc(&trees[1], tree->buffer, tree->size); ret = unpack_trees(2, trees, &topts); + if (topts.dir) { + dir_clear(topts.dir); + FREE_AND_NULL(topts.dir); + } clear_unpack_trees_porcelain(&topts); if (ret == -1) { /* diff --git a/builtin/read-tree.c b/builtin/read-tree.c index 485e7b0479..96102c222b 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -250,6 +250,11 @@ int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix) if (unpack_trees(nr_trees, t, &opts)) return 128; + if (opts.dir) { + dir_clear(opts.dir); + FREE_AND_NULL(opts.dir); + } + if (opts.debug_unpack || opts.dry_run) return 0; /* do not write the index out */