From: Junio C Hamano Date: Thu, 22 Nov 2007 20:21:04 GMT Subject: Re: [PATCH] Avoid recalculating filename string pointer. Message-ID: <7voddm3ubz.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20071122195457.GB19675@glandium.org> Mike Hommey writes: > On Wed, Nov 21, 2007 at 10:59:41PM -0200, André Goddard Rosa wrote: >> --- a/fast-import.c >> +++ b/fast-import.c >> @@ -2304,11 +2304,13 @@ int main(int argc, const char **argv) >> else if (!prefixcmp(a, "--export-marks=")) >> mark_file = a + 15; >> else if (!prefixcmp(a, "--export-pack-edges=")) { >> + char *filename = a + 20; >> + >> if (pack_edges) >> fclose(pack_edges); >> - pack_edges = fopen(a + 20, "a"); >> + pack_edges = fopen(filename, "a"); >> if (!pack_edges) >> - die("Cannot open %s: %s", a + 20, strerror(errno)); >> + die("Cannot open %s: %s", filename, strerror(errno)); >> } else if (!strcmp(a, "--force")) >> force_update = 1; >> else if (!strcmp(a, "--quiet")) > > Normally, the compiler takes care of such optimizations. It actually > takes care of it much better than you can do yourself, and doing it > yourself can even sometimes generate less optimized code because it > gets in the compiler optimizations'way. True, but I think another point of the patch is to address the risk of two instances of "+ 20" going out of sync if/when the option parsing is updated. Not that I think André meant the patch as defensive coding (the subject suggests it was meant to be a micro-optimization), nor this is the good way to address that risk factor (parse-options may be a better match for it).