Johannes Schindelin <[email protected]> writes:
> diff --git a/hashmap.c b/hashmap.c
> index b10b642229c..061b7d61da6 100644
> --- a/hashmap.c
> +++ b/hashmap.c
> @@ -50,6 +50,20 @@ unsigned int memihash(const void *buf, size_t len)
> return hash;
> }
>
> +/* Incoporate another chunk of data into a memihash computation. */
> +unsigned int memihash_continue(unsigned int hash,
> + const void *buf, size_t len)
> +{
> + const unsigned char *p = buf;
> + while (len--) {
> + unsigned int c = *p++;
> + if (c >= 'a' && c <= 'z')
> + c -= 'a' - 'A';
> + hash = (hash * FNV32_PRIME) ^ c;
> + }
> + return hash;
> +}
This makes me wonder if we want to reduce the duplication (primarily
to avoid risking the loop body to go out of sync) by doing:
unsigned int memihash(const void *buf, size_t len)
{
return memihash_continue(buf, len, FNV32_BASE);
}
If an extra call level really matters, its "inline" equivalent in
the header would probably be good.