"brian m. carlson" <sandals@xxxxxxxxxxxxxxxxxxxx> writes: > -+ buf += the_hash_algo->rawsz; > -+ size -= the_hash_algo->rawsz; > ++ memcpy(it->oid.hash, (const unsigned char*)buf, rawsz); > ++ buf += rawsz; > ++ size -= rawsz; > } Using memcpy() to stuff the hash[] field of oid structure with a bare byte array of rawsz bytes appears twice as a pattern in these patches. I wonder if this is something we want to abstract behind the API, e.g. size_t oidstuff_(struct object_id *oid, const unsigned char *buf) { size_t rawsz = the_hash_algo->rawsz; memcpy(oid->hash, buf, rawsz); return rawsz; } It just felt a bit uneven to be using a bare-metal memcpy() when oidcpy() abstraction releaves the callers from having to be aware of the rawsz all the time.