On Wed, Mar 14, 2018 at 10:31:37AM -0700, Junio C Hamano wrote:
> "brian m. carlson" <sand...@crustytoothpaste.net> 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.

Duy suggested oidread and oidwrite, which I can certainly implement.
I'm also comfortable with just keeping hashcpy around for these cases if
we want.
-- 
brian m. carlson / brian with sandals: Houston, Texas, US
https://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: https://keybase.io/bk2204

Attachment: signature.asc
Description: PGP signature

Reply via email to