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>
This commit is contained in:

committed by
Junio C Hamano

parent
cb5918aa0d
commit
24d707f636
16
bisect.c
16
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) {
|
||||
|
Reference in New Issue
Block a user