Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Dec 2000 10:29:51 -0700
From:      Warner Losh <imp@village.org>
To:        Ben Smithurst <ben@FreeBSD.ORG>
Cc:        audit@FreeBSD.ORG
Subject:   Re: printf(1) broken for some long format strings 
Message-ID:  <200012191729.eBJHTps36903@billy-club.village.org>
In-Reply-To: Your message of "Tue, 19 Dec 2000 14:35:06 GMT." <20001219143506.C78749@strontium.scientia.demon.co.uk> 
References:  <20001219143506.C78749@strontium.scientia.demon.co.uk>  

next in thread | previous in thread | raw e-mail | index | archive | help
In message <20001219143506.C78749@strontium.scientia.demon.co.uk> Ben Smithurst writes:
: +	if (len > copy_size) {
: +		if ((newcopy = realloc(copy, len)) == NULL)
: +			return NULL;
: +		copy = newcopy;
: +		copy_size = len;
: +	}

	if (len > copy_size) {
		if (copy_size == 0)
			newlen = 1024;
		else
			newlen = ((len + 1023) >> 10) << 10;
		if ((newcopy = realloc(copy, newlen)) == NULL)
			return NULL;
		copy = newcopy;
		copy_size = newlen;
	}
			
might be a little better.  It will round the size to the next highest
k boundary, which will result in fewer malloc calls.  A slightly
better way would be to find some way to round it up to the next power
of 2 so that you do even fewer malloc calls, but my bit tiddling foo
isn't awake yet this morning.

Warner


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200012191729.eBJHTps36903>