Merge branch 'ds/reachable'
authorJunio C Hamano <gitster@pobox.com>
Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)
committerJunio C Hamano <gitster@pobox.com>
Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)
Trivial bugfix.

* ds/reachable:
commit-reach: fix cast in compare_commits_by_gen()

1  2 
commit-reach.c
diff --combined commit-reach.c
index 79419be8aff7426ec435f040b88f8e91040b71f4,c6de0cc89cee8f914e8c272f2d70e64a76edb490..a9da65c4625cbbeb165b0c2d54fe3edabb1a3a34
@@@ -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.
                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;
                        }
  
        }
  
  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++)