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 */