X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=progress.c;h=55a8687ad15788f8ea5a5beb463d216908f618b2;hb=1b118da8bd1878d78589afd9f755b9d52a9579ad;hp=d19f80c0bb25928383f8a1aff3f6f49f9a65131c;hpb=2ce1a1f23fd83d2cab22f87aff1165fb0c7ad450;p=git.git diff --git a/progress.c b/progress.c index d19f80c0b..55a8687ad 100644 --- a/progress.c +++ b/progress.c @@ -241,16 +241,21 @@ void stop_progress_msg(struct progress **p_progress, const char *msg) *p_progress = NULL; if (progress->last_value != -1) { /* Force the last update */ - char buf[strlen(msg) + 5]; + char buf[128], *bufp; + size_t len = strlen(msg) + 5; struct throughput *tp = progress->throughput; + + bufp = (len < sizeof(buf)) ? buf : xmalloc(len + 1); if (tp) { unsigned int rate = !tp->avg_misecs ? 0 : tp->avg_bytes / tp->avg_misecs; throughput_string(tp, tp->curr_total, rate); } progress_update = 1; - sprintf(buf, ", %s.\n", msg); - display(progress, progress->last_value, buf); + sprintf(bufp, ", %s.\n", msg); + display(progress, progress->last_value, bufp); + if (buf != bufp) + free(bufp); } clear_progress_signal(); free(progress->throughput);