advice: pass varargs to strbuf_vaddf, not strbuf_addf
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>
This commit is contained in:

committed by
Junio C Hamano

parent
d0f1ea6003
commit
447b99c8b1
2
advice.c
2
advice.c
@ -26,7 +26,7 @@ void advise(const char *advice, ...)
|
|||||||
const char *cp, *np;
|
const char *cp, *np;
|
||||||
|
|
||||||
va_start(params, advice);
|
va_start(params, advice);
|
||||||
strbuf_addf(&buf, advice, params);
|
strbuf_vaddf(&buf, advice, params);
|
||||||
va_end(params);
|
va_end(params);
|
||||||
|
|
||||||
for (cp = buf.buf; *cp; cp = np) {
|
for (cp = buf.buf; *cp; cp = np) {
|
||||||
|
Reference in New Issue
Block a user