diff options
Diffstat (limited to 'revision.c')
| -rw-r--r-- | revision.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/revision.c b/revision.c index 5fecd7e0d7..e79f39e555 100644 --- a/revision.c +++ b/revision.c @@ -1071,7 +1071,11 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) ts->treesame[nth_parent] = 1; continue; } + + free_commit_list(parent->next); parent->next = NULL; + while (commit->parents != parent) + pop_commit(&commit->parents); commit->parents = parent; /* @@ -1103,6 +1107,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) die("cannot simplify commit %s (invalid %s)", oid_to_hex(&commit->object.oid), oid_to_hex(&p->object.oid)); + free_commit_list(p->parents); p->parents = NULL; } /* fallthrough */ @@ -1648,7 +1653,7 @@ struct all_refs_cb { struct worktree *wt; }; -static int handle_one_ref(const char *path, const struct object_id *oid, +static int handle_one_ref(const char *path, const char *referent UNUSED, const struct object_id *oid, int flag UNUSED, void *cb_data) { @@ -1872,7 +1877,7 @@ void add_index_objects_to_pending(struct rev_info *revs, unsigned int flags) continue; /* current index already taken care of */ if (read_index_from(&istate, - worktree_git_path(wt, "index"), + worktree_git_path(the_repository, wt, "index"), get_worktree_git_dir(wt)) > 0) do_add_index_objects_to_pending(revs, &istate, flags); discard_index(&istate); |
