advice: pass varargs to strbuf_vaddf, not strbuf_addf
authorJeff King <peff@peff.net>
Mon, 23 Jul 2012 18:48:57 +0000 (14:48 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Jul 2012 20:10:43 +0000 (13:10 -0700)
The advise() function takes a variable number of arguments
and converts them into a va_list object to pass to strbuf
for handling. However, we accidentally called strbuf_addf
(that takes a variable number of arguments) instead of
strbuf_vaddf (that takes a va_list).

This bug dates back to v1.7.8.1-1-g23cb5bf, but we never
noticed because none of the current callers passes a string
with a format specifier in it. And the compiler did not
notice because the format string is not available at
compile time.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
advice.c

index 65a07859f261e12e88d638a1f4546583e0133d4c..961a4f5e4156dbf675f039f93eb369bb6b0cfa7a 100644 (file)
--- a/advice.c
+++ b/advice.c
@@ -26,7 +26,7 @@ void advise(const char *advice, ...)
        const char *cp, *np;
 
        va_start(params, advice);
-       strbuf_addf(&buf, advice, params);
+       strbuf_vaddf(&buf, advice, params);
        va_end(params);
 
        for (cp = buf.buf; *cp; cp = np) {