Jeff Hostetler <[email protected]> writes:

>>     void sha1_file_name(struct strbuf *buf, const unsigned char
>> *sha1)
>>   {
>> -    strbuf_addf(buf, "%s/", get_object_directory());
>> +    const char *obj_dir = get_object_directory();
>> +    size_t extra = strlen(obj_dir) + 1 + GIT_MAX_HEXSZ;
>
> Very minor nit.  Should this be "+3" rather than "+1"?
> One for the slash after obj_dir, one for the slash between
> "xx/y[38]", and one for the trailing NUL.
>
>>   +  if (extra > strbuf_avail(buf))
>> +            strbuf_grow(buf, extra);

The callers who care use static strbuf with 1/2, which lets them
grow it to an appropriate size after they make their first call.

On the other hand, the ones to which performance does not matter by
definition do not care.

I actually think this whole "extra -> grow" business should be
discarded.  With a miscomputed "extra" like this, it does not help
anybody---everybody may pay cost for one extra realloc due to the
miscalculation, and the ones that do care also do during their first
call.


Reply via email to