Re: [PATCH v3 05/10] abspath: convert real_path_internal() to strbuf
- From
René Scharfe <l.s.r@web.de>
- Date
- Jul 28, 2014, 22:20 UTC
- Message-ID
- <53D6CCB1.7000809@web.de>
- In-Reply-To
- <20140728190946.GC11265@peff.net>
Am 28.07.2014 um 21:09 schrieb Jeff King:
Show 16 quoted lines
> 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é