git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] sideband.c: Use xmalloc() instead of variable-sized arrays.

From
Nicolas Pitre <nico@cam.org>
Date
Jan 8, 2008, 19:59 UTC
Message-ID
<alpine.LFD.1.00.0801081444360.3054@xanadu.home>
In-Reply-To
<7v4pdotdtl.fsf@gitster.siamese.dyndns.org>
On Tue, 8 Jan 2008, Junio C Hamano wrote:
Show 31 quoted lines
> Johannes Sixt <j.sixt@viscovery.net> writes:
> 
> > From: Johannes Sixt <johannes.sixt@telecom.at>
> >
> > How come we got along with this not very portable construct for so long?
> > Probably because the array sizes were computed from the results of
> > strlen() of string constants. Anyway, a follow-up patch will make the
> > lengths really non-constant.
> >
> > Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
> > ---
> >  sideband.c |   14 ++++++++++++--
> >  1 files changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/sideband.c b/sideband.c
> > index 756bbc2..513d7b3 100644
> > --- a/sideband.c
> > +++ b/sideband.c
> > @@ -19,7 +19,10 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
> >  {
> >  	unsigned pf = strlen(PREFIX);
> >  	unsigned sf = strlen(SUFFIX);
> > -	char buf[pf + LARGE_PACKET_MAX + sf + 1];
> > +	char *buf, *save;
> > +
> > +	save = xmalloc(sf);
> > +	buf = xmalloc(pf + LARGE_PACKET_MAX + sf + 1);
> 
> I have to wonder if the malloc() overhead is small enough
> compared to the network bandwidth to make a two malloc-free
> pairs per packet a non-issue...
Eeek.  Overhead might be insignificant, but it still doesn't feel right.

What about using alloca() instead? This is not like if we are doing funky things with the allocated memory anyway.

Nicolas
Previous: Junio C HamanoNext: Junio C Hamano
Message 8 of 11 in “sideband.c: Use xmalloc() instead of variable-sized arrays.”
  1. 1/2 sideband.c: Use xmalloc() instead of variable-sized arrays.Johannes Sixt, Jan 8, 2008
  2. Nicolas PitreJan 8, 2008
  3. Johannes SixtJan 9, 2008
  4. Junio C HamanoJan 9, 2008
  5. Johannes SixtJan 9, 2008
  6. Nicolas PitreJan 9, 2008
  7. Junio C HamanoJan 8, 2008
  8. Nicolas PitreJan 8, 2008
  9. Junio C HamanoJan 8, 2008
  10. Nicolas PitreJan 8, 2008
  11. Johannes SixtJan 9, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.