summaryrefslogtreecommitdiff
path: root/bisect.c
diff options
context:
space:
mode:
authorMartin Ågren <martin.agren@gmail.com>2017-11-05 20:24:28 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-11-06 01:15:29 (GMT)
commit24d707f636f01d41f708a010f255dd46a8fce08c (patch)
treedc3b548317d58c6b073b7a5e847a6d6c9a992a93 /bisect.c
parentcb5918aa0d50f50e83787f65c2ddc3dcb10159fe (diff)
downloadgit-24d707f636f01d41f708a010f255dd46a8fce08c.zip
git-24d707f636f01d41f708a010f255dd46a8fce08c.tar.gz
git-24d707f636f01d41f708a010f255dd46a8fce08c.tar.bz2
bisect: change calling-convention of `find_bisection()`
This function takes a commit list and returns a commit list. The returned list is built by modifying the original list. Thus the caller should not use the original list again (and after the next commit fixes a memory leak, it must not). Change the function signature so that it takes a **list and has void return type. That should make it harder to misuse this function. While we're here, document this function. Signed-off-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'bisect.c')
-rw-r--r--bisect.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/bisect.c b/bisect.c
index 96beeb5..5a3ae49 100644
--- a/bisect.c
+++ b/bisect.c
@@ -360,21 +360,20 @@ static struct commit_list *do_find_bisection(struct commit_list *list,
return best_bisection_sorted(list, nr);
}
-struct commit_list *find_bisection(struct commit_list *list,
- int *reaches, int *all,
- int find_all)
+void find_bisection(struct commit_list **commit_list, int *reaches,
+ int *all, int find_all)
{
int nr, on_list;
- struct commit_list *p, *best, *next, *last;
+ struct commit_list *list, *p, *best, *next, *last;
int *weights;
- show_list("bisection 2 entry", 0, 0, list);
+ show_list("bisection 2 entry", 0, 0, *commit_list);
/*
* Count the number of total and tree-changing items on the
* list, while reversing the list.
*/
- for (nr = on_list = 0, last = NULL, p = list;
+ for (nr = on_list = 0, last = NULL, p = *commit_list;
p;
p = next) {
unsigned flags = p->item->object.flags;
@@ -402,7 +401,7 @@ struct commit_list *find_bisection(struct commit_list *list,
*reaches = weight(best);
}
free(weights);
- return best;
+ *commit_list = best;
}
static int register_ref(const char *refname, const struct object_id *oid,
@@ -954,8 +953,7 @@ int bisect_next_all(const char *prefix, int no_checkout)
bisect_common(&revs);
- revs.commits = find_bisection(revs.commits, &reaches, &all,
- !!skipped_revs.nr);
+ find_bisection(&revs.commits, &reaches, &all, !!skipped_revs.nr);
revs.commits = managed_skipped(revs.commits, &tried);
if (!revs.commits) {