Taylor Blau <me@xxxxxxxxxxxx> writes: > On Fri, May 06, 2022 at 11:18:25AM -0700, Junio C Hamano wrote: >> Chris Down <chris@xxxxxxxxxxxxxx> writes: >> >> > +__attribute__((format (printf, 1, 2))) >> > +static void bisect_log_printf(const char *fmt, ...) >> > +{ >> > + va_list ap; >> > + char buf[1024]; >> > + >> > + va_start(ap, fmt); >> > + if (vsnprintf(buf, sizeof(buf), fmt, ap) < 0) >> > + *buf = '\0'; >> > + va_end(ap); >> >> We should just do >> >> struct strbuf buf = STRBUF_INIT; >> >> va_start(ap, fmt); >> strbuf_vaddf(&buf, fmt, ap); >> va_end(ap); >> >> > + printf("%s", buf); >> > + append_to_file(git_path_bisect_log(), "# %s", buf); >> >> and free the resource with >> >> strbuf_release(&buf); >> >> I think. > > I don't think so. bisect_log_printf() has only one caller, which is > bisect_print_status(). Couldn't the latter manage its own strbuf without > the need to introduce a new varargs function? I actually was hoping that other existing informational messages prefixed with "Bisecting:" (i.e. those that tells you how many steps are remaining) can go as similar comments to the log file; they are currently written with plain-vanilla printf(3), and could use this one instead.