From: Nicolas Pitre Date: Wed, 09 Jan 2008 19:14:55 GMT Subject: Re: [PATCH 1/2] sideband.c: Use xmalloc() instead of variable-sized arrays. Message-ID: In-Reply-To: <7vk5mjmo4f.fsf@gitster.siamese.dyndns.org> On Tue, 8 Jan 2008, Junio C Hamano wrote: > As an old fashoned git myself, and given the fact that the > possible prefix and suffix are small number of short constant > strings, I actually prefer a simpler-and-more-stupid approach. OK. However I think the following on top of your patch would look cleaner: diff --git a/sideband.c b/sideband.c index 91e462c..b677781 100644 --- a/sideband.c +++ b/sideband.c @@ -14,19 +14,24 @@ #define PREFIX "remote:" +#define ANSI_SUFFIX "\033[K" +#define DUMB_SUFFIX " " + +#define FIX_SIZE 10 /* large enough for any of the above */ + int recv_sideband(const char *me, int in_stream, int out, int err) { unsigned pf = strlen(PREFIX); unsigned sf; - char buf[LARGE_PACKET_MAX + 100]; /* for marker slop */ + char buf[LARGE_PACKET_MAX + 2*FIX_SIZE]; char *suffix, *term; memcpy(buf, PREFIX, pf); term = getenv("TERM"); if (term && strcmp(term, "dumb")) - suffix = "\033[K"; + suffix = ANSI_SUFFIX; else - suffix = " "; + suffix = DUMB_SUFFIX; sf = strlen(suffix); while (1) { @@ -67,7 +72,7 @@ int recv_sideband(const char *me, int in_stream, int out, int err) * line data actually contains something. */ if (brk > pf+1 + 1) { - char save[100]; /* enough slop */ + char save[FIX_SIZE]; memcpy(save, buf + brk, sf); buf[brk + sf - 1] = buf[brk - 1]; memcpy(buf + brk - 1, suffix, sf);