summaryrefslogtreecommitdiff
path: root/bisect.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-10-14 02:03:22 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-10-14 02:03:22 (GMT)
commit0941d6054524bc91f45bf3cbb1c641712b0e0e6d (patch)
treec2ff08811332fe9247ca57f124863d8289ba7844 /bisect.c
parentdd57c76e84372bf16c6bdba9a1bd49da3e617339 (diff)
parent86a0a408b900eecc9d0d4a1eb8ae223181e96679 (diff)
downloadgit-0941d6054524bc91f45bf3cbb1c641712b0e0e6d.zip
git-0941d6054524bc91f45bf3cbb1c641712b0e0e6d.tar.gz
git-0941d6054524bc91f45bf3cbb1c641712b0e0e6d.tar.bz2
Merge branch 'rs/pending'
* rs/pending: commit: factor out clear_commit_marks_for_object_array checkout: use leak_pending flag bundle: use leak_pending flag bisect: use leak_pending flag revision: add leak_pending flag checkout: use add_pending_{object,sha1} in orphan check revision: factor out add_pending_sha1 checkout: check for "Previous HEAD" notice in t2020 Conflicts: builtin/checkout.c revision.c
Diffstat (limited to 'bisect.c')
-rw-r--r--bisect.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/bisect.c b/bisect.c
index de05bf8..6e186e2 100644
--- a/bisect.c
+++ b/bisect.c
@@ -800,25 +800,25 @@ static int check_ancestors(const char *prefix)
{
struct rev_info revs;
struct object_array pending_copy;
- int i, res;
+ int res;
bisect_rev_setup(&revs, prefix, "^%s", "%s", 0);
/* Save pending objects, so they can be cleaned up later. */
- memset(&pending_copy, 0, sizeof(pending_copy));
- for (i = 0; i < revs.pending.nr; i++)
- add_object_array(revs.pending.objects[i].item,
- revs.pending.objects[i].name,
- &pending_copy);
+ pending_copy = revs.pending;
+ revs.leak_pending = 1;
+ /*
+ * bisect_common calls prepare_revision_walk right away, which
+ * (together with .leak_pending = 1) makes us the sole owner of
+ * the list of pending objects.
+ */
bisect_common(&revs);
res = (revs.commits != NULL);
/* Clean up objects used, as they will be reused. */
- for (i = 0; i < pending_copy.nr; i++) {
- struct object *o = pending_copy.objects[i].item;
- clear_commit_marks((struct commit *)o, ALL_REV_FLAGS);
- }
+ clear_commit_marks_for_object_array(&pending_copy, ALL_REV_FLAGS);
+ free(pending_copy.objects);
return res;
}