[PATCH 2/4] Move finding bisection into do_find_bisection.
From: Christian Couder <hidden>
Date: 2016-06-15 22:43:25
Subsystem:
the rest · Maintainer:
Linus Torvalds
This factorises some code and make a big function smaller. Signed-off-by: Christian Couder <redacted> --- builtin-rev-list.c | 40 +++++++++++++++++++++++++--------------- 1 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/builtin-rev-list.c b/builtin-rev-list.c
index 5bcafe4..4e2524a 100644
--- a/builtin-rev-list.c
+++ b/builtin-rev-list.c@@ -255,6 +255,9 @@ static void show_list(const char *debug, int counted, int nr, } #endif /* DEBUG_BISECT */ +static struct commit_list *do_find_bisection(struct commit_list *list, + int nr, int *weights); + /* * zero or positive weight is the number of interesting commits it can * reach, including itself. Especially, weight = 0 means it does not
@@ -272,7 +275,7 @@ static void show_list(const char *debug, int counted, int nr, static struct commit_list *find_bisection(struct commit_list *list, int *reaches, int *all) { - int n, nr, on_list, counted, distance; + int nr, on_list; struct commit_list *p, *best, *next, *last; int *weights;
@@ -301,6 +304,25 @@ static struct commit_list *find_bisection(struct commit_list *list, *all = nr; weights = xcalloc(on_list, sizeof(int)); + + /* Do the real work of finding bisection commit. */ + best = do_find_bisection(list, nr, weights); + + if (best) + best->next = NULL; + + *reaches = weight(best); + free(weights); + + return best; +} + +static struct commit_list *do_find_bisection(struct commit_list *list, + int nr, int *weights) +{ + int n, counted, distance; + struct commit_list *p, *best; + counted = 0; for (n = 0, p = list; p; p = p->next) {
@@ -357,12 +379,8 @@ static struct commit_list *find_bisection(struct commit_list *list, weight_set(p, distance); /* Does it happen to be at exactly half-way? */ - if (halfway(p, distance, nr)) { - p->next = NULL; - *reaches = distance; - free(weights); + if (halfway(p, distance, nr)) return p; - } counted++; }
@@ -400,12 +418,8 @@ static struct commit_list *find_bisection(struct commit_list *list, /* Does it happen to be at exactly half-way? */ distance = weight(p); - if (halfway(p, distance, nr)) { - p->next = NULL; - *reaches = distance; - free(weights); + if (halfway(p, distance, nr)) return p; - } } }
@@ -425,12 +439,8 @@ static struct commit_list *find_bisection(struct commit_list *list, if (distance > counted) { best = p; counted = distance; - *reaches = weight(p); } } - if (best) - best->next = NULL; - free(weights); return best; }
--
1.5.2.1.144.gabc40