Re: [PATCH 6/9] Rewrite launch_editor, create_tag and stripspace to use strbufs.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2007-09-06 at 17:38 +0100, Johannes Schindelin wrote:
> Hi,
> 
> On Wed, 5 Sep 2007, Kristian Høgsberg wrote:
> 
> > diff --git a/strbuf.c b/strbuf.c
> > index fcfc05e..ed2afea 100644
> > --- a/strbuf.c
> > +++ b/strbuf.c
> > @@ -73,43 +74,15 @@ void strbuf_printf(struct strbuf *sb, const char *fmt, ...)
> >  {
> >  	char buffer[2048];
> >  	va_list args;
> > -	int len, size = 2 * sizeof buffer;
> > +	int len;
> >  
> >  	va_start(args, fmt);
> >  	len = vsnprintf(buffer, sizeof(buffer), fmt, args);
> >  	va_end(args);
> >  
> > -	if (len > sizeof(buffer)) {
> > -		/*
> > -		 * Didn't fit in the buffer, but this vsnprintf at
> > -		 * least gives us the required length back.  Grow the
> > -		 * buffer acccordingly and try again.
> > -		 */
> > -		strbuf_grow(sb, len);
> > -		va_start(args, fmt);
> > -		len = vsnprintf(sb->buf + sb->len,
> > -				sb->alloc - sb->len, fmt, args);
> > -		va_end(args);
> > -	} else if (len >= 0) {
> > -		/*
> > -		 * The initial vsnprintf fit in the temp buffer, just
> > -		 * copy it to the strbuf.
> > -		 */
> > -		strbuf_add(sb, buffer, len);
> > -	} else {
> > -		/*
> > -		 * This vnsprintf sucks and just returns -1 when the
> > -		 * buffer is too small.  Keep doubling the size until
> > -		 * it fits.
> > -		 */
> > -		while (len < 0) {
> > -			strbuf_grow(sb, size);
> > -			va_start(args, fmt);
> > -			len = vsnprintf(sb->buf + sb->len,
> > -					sb->alloc - sb->len, fmt, args);
> > -			va_end(args);
> > -			size *= 2;
> > -		}
> > -	}
> > +	if (len > sizeof(buffer) || len < 0)
> > +		die("out of buffer space\n");
> > +
> > +	strbuf_add(sb, buffer, len);
> >  }
> 
> Really?
> 
> (If you find the time, it would be really nice to rebase that patch series 
> on top of Pierre's strbuf work...)

Argh, this was a screwup when I edited the patch series.  The next
series is based on Pierres changes.

Kristian


-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux