From: Junio C Hamano Date: Tue, 30 Oct 2018 06:43:47 +0000 (+0900) Subject: Merge branch 'ds/reachable' X-Git-Tag: v2.20.0-rc0~107 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/f2d1c83df05e30d7588ba3c28b994d6ebbdbc9b0?hp=-c Merge branch 'ds/reachable' Trivial bugfix. * ds/reachable: commit-reach: fix cast in compare_commits_by_gen() --- f2d1c83df05e30d7588ba3c28b994d6ebbdbc9b0 diff --combined commit-reach.c index 79419be8af,c6de0cc89c..a9da65c462 --- a/commit-reach.c +++ b/commit-reach.c @@@ -39,9 -39,6 +39,9 @@@ static struct commit_list *paint_down_t int i; uint32_t last_gen = GENERATION_NUMBER_INFINITY; + if (!min_generation) + queue.compare = compare_commits_by_commit_date; + one->object.flags |= PARENT1; if (!n) { commit_list_append(one, &result); @@@ -59,7 -56,7 +59,7 @@@ struct commit_list *parents; int flags; - if (commit->generation > last_gen) + if (min_generation && commit->generation > last_gen) BUG("bad generation skip %8x > %8x at %s", commit->generation, last_gen, oid_to_hex(&commit->object.oid)); @@@ -426,7 -423,7 +426,7 @@@ struct contains_stack static int in_commit_list(const struct commit_list *want, struct commit *c) { for (; want; want = want->next) - if (!oidcmp(&want->item->object.oid, &c->object.oid)) + if (oideq(&want->item->object.oid, &c->object.oid)) return 1; return 0; } @@@ -529,8 -526,8 +529,8 @@@ int commit_contains(struct ref_filter * static int compare_commits_by_gen(const void *_a, const void *_b) { - const struct commit *a = (const struct commit *)_a; - const struct commit *b = (const struct commit *)_b; + const struct commit *a = *(const struct commit * const *)_a; + const struct commit *b = *(const struct commit * const *)_b; if (a->generation < b->generation) return -1; @@@ -561,8 -558,7 +561,8 @@@ int can_all_from_reach_with_flag(struc from_one = deref_tag(the_repository, from_one, "a from object", 0); if (!from_one || from_one->type != OBJ_COMMIT) { - /* no way to tell if this is reachable by + /* + * no way to tell if this is reachable by * looking at the ancestry chain alone, so * leave a note to ourselves not to worry about * this object anymore. @@@ -593,10 -589,8 +593,10 @@@ while (stack) { struct commit_list *parent; - if (stack->item->object.flags & with_flag) { + if (stack->item->object.flags & (with_flag | RESULT)) { pop_commit(&stack); + if (stack) + stack->item->object.flags |= RESULT; continue; } @@@ -628,7 -622,10 +628,7 @@@ } cleanup: - for (i = 0; i < nr_commits; i++) { - clear_commit_marks(list[i], RESULT); - clear_commit_marks(list[i], assign_flag); - } + clear_commit_marks_many(nr_commits, list, RESULT | assign_flag); free(list); for (i = 0; i < from->nr; i++)