improve alloc_vprintf
commit338a674faa96ae321560efa3f1b1e8122d61aac4
authorAndreas Fritiofson <andreas.fritiofson@gmail.com>
Tue, 24 Nov 2009 20:24:06 +0000 (24 21:24 +0100)
committerZachary T Welch <zw@superlucidity.net>
Tue, 24 Nov 2009 20:48:02 +0000 (24 12:48 -0800)
treec5ceee16364ea110d55d1e15abc19aca84c7d8d6
parent5507b5f430e3d6bef00a7ffcd51df29c13d7477e
improve alloc_vprintf

The previous implementation was unnecessarily complex. Get rid of the loops,
let vsnprintf() tell us directly how much storage we need and allocate that. A
second pass writes the actual string. Also add a va_end() that was missing.
This should be much faster for large strings and less wasteful for small ones.

A quirk that has been retained is that some callers patch in a newline at the
end of the returned string and depend on alloc_vprintf to allocate at least
one byte extra.

Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Signed-off-by: Zachary T Welch <zw@superlucidity.net>
src/helper/log.c