Hi Junio,

On Fri, 29 Jul 2016, Junio C Hamano wrote:

> Kevin Willford <kcwillf...@gmail.com> writes:
> 
> >  static int patch_id_cmp(struct patch_id *a,
> >                     struct patch_id *b,
> > -                   void *keydata)
> > +                   struct diff_options *opt)
> >  {
> > +   if (is_null_sha1(a->patch_id) &&
> > +       commit_patch_id(a->commit, opt, a->patch_id, 0))
> > +           return error("Could not get patch ID for %s",
> > +                   oid_to_hex(&a->commit->object.oid));
> > +   if (is_null_sha1(b->patch_id) &&
> > +       commit_patch_id(b->commit, opt, b->patch_id, 0))
> > +           return error("Could not get patch ID for %s",
> > +                   oid_to_hex(&b->commit->object.oid));
> >     return hashcmp(a->patch_id, b->patch_id);
> >  }
> 
> These error returns initially looks slightly iffy in that in general
> the caller of any_cmp_fn() wants to know how a/b compares, but by
> returning error(), it always says "a is smaller than b".

I am to blame, as this is my design.

And yes, it is kind of funny that we require a cmpfn that returns <0, ==0
and >0 for comparisons, when hashmaps try to avoid any order.

Do you want a note in the commit message about this "abuse" of a negative
return value, or a code comment?

> The idea of using the two level hash, computing the more expensive
> one only when the hashmap hashes of the result of the cheaper hash
> function collide, is excellent.

Thanks :-)

Ciao,
Dscho
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to