From: René Scharfe Date: Mon, 28 Jul 2014 22:20:33 GMT Subject: Re: [PATCH v3 05/10] abspath: convert real_path_internal() to strbuf Message-ID: <53D6CCB1.7000809@web.de> In-Reply-To: <20140728190946.GC11265@peff.net> 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é