Subject: Re: [PATCH v3 02/25] Convert git_snpath() to strbuf_git_path()

From: Junio C Hamano <[email-masked]>
Date: Wed, 19 Feb 2014 19:41:52 -0800

Duy Nguyen <[email-masked]> writes:

>>> -             }
>>> +             if (old->path && old->name &&
>>> +                 !file_exists(git_path("%s", old->path)) &&
>>> +                  file_exists(git_path("logs/%s", old->path)))
>>> +                     remove_path(git_path("logs/%s", old->path));
>>
>> Hmph.  Is this conversion safe?
>>
>> This adds three uses of the round-robin path buffer; if a caller of
>> this function used two or more path buffers obtained from
>> get_pathname() and expected their contents to remain stable across
>> the call to this, it will silently break.
>
> three round-robin buffers but not all required at the same time, once
> the first file_exists() returns the first round-robin buffer could be
> free, and remove_path() calls git_path again, not reusing the result
> from the second file_exists, so the second buffer is free to go too.

I know these three callers to git_path() will not step on each
other's toes.  But that is not the question I asked.