Subject: Re: [PATCH v3 05/10] abspath: convert real_path_internal() to strbuf

From: René Scharfe <[email-masked]>
Date: Tue, 29 Jul 2014 00:20:33 +0200

Am 28.07.2014 um 21:09 schrieb Jeff King:
> On Mon, Jul 28, 2014 at 08:28:30PM +0200, René Scharfe wrote:
>
>>   static const char *real_path_internal(const char *path, int die_on_error)
>>   {
>> -	static char bufs[2][PATH_MAX + 1], *buf = bufs[0], *next_buf = bufs[1];
>> +	static struct strbuf sb = STRBUF_INIT;
>
> Hrm. I thought at first that this was our usual trick of keeping two
> "simultaneous" static buffers, so that we can do:
>
>    printf("paths '%s' and '%s'\n", real_path(foo), real_path(bar));
>
> But it looks like that is not the case, and we only have two for
> swapping back and forth as we figure out the answer (but they both need
> to be static, because we do not know which one we will return in the
> end). Is that right?

AFAICS it's only swapped to avoid copying the results of a readlink() 
call against one buffer into the other.  So, yes, that's how I 
understand it as well.

René