Re: [PATCH 1/2] sideband.c: Use xmalloc() instead of variable-sized arrays.
- From
Nicolas Pitre <nico@cam.org>
- Date
- Jan 9, 2008, 19:14 UTC
- Message-ID
- <alpine.LFD.1.00.0801091412000.3054@xanadu.home>
- 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);