Jeff King <peff@xxxxxxxx> writes: > +static void xor_bytes(unsigned char *out, unsigned char *a, unsigned char *b, > + unsigned n) > +{ > + unsigned i; > + for (i = 0; i < n; i++) > + out[i] = a[i] ^ b[i]; > +} > + > +static void mix_hash(unsigned char *h, unsigned n) > +{ > + unsigned char out[20]; > + unsigned mid = n / 2; > + > + if (2*mid < n) > + return; > + > + xor_bytes(out, h, h + mid, mid); > + xor_bytes(out + mid, h + mid, h, mid); > + memcpy(h, out, n); > + > + /* If a little bit of mixing is good, then a lot must be GREAT! */ > + mix_hash(h, mid); > + mix_hash(h + mid, mid); > +} You seem to want to reduce the hash down to 5-bytes by duplicating the same value on the left and right half, and duplicate that four times to fill 20-byte buffer, but doesn't this look unnecessarily inefficient way to achieve that? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html