summaryrefslogtreecommitdiff
path: root/progress.c
diff options
context:
space:
mode:
authorBoyd Lynn Gerber <gerberb@zenez.com>2008-06-08 15:26:15 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-06-08 20:56:32 (GMT)
commitd4c44443b665ee8e6bd638b5c1b3fa6aa2a1226c (patch)
tree69050bd611159d4b91d852a6c3a5cdcf6e8ddb7a /progress.c
parenteba1351f03060f0c949db044e8a3b36c862c4337 (diff)
downloadgit-d4c44443b665ee8e6bd638b5c1b3fa6aa2a1226c.zip
git-d4c44443b665ee8e6bd638b5c1b3fa6aa2a1226c.tar.gz
git-d4c44443b665ee8e6bd638b5c1b3fa6aa2a1226c.tar.bz2
progress.c: avoid use of dynamic-sized array
Dynamically sized arrays are gcc and C99 construct. Using them hurts portability to older compilers, although using them is nice in this case it is not desirable. This patch removes the only use of the construct in stop_progress_msg(); the function is about writing out a single line of a message, and the existing callers of this function feed messages of only bounded size anyway, so use of dynamic array is simply overkill. Signed-off-by: Boyd Lynn Gerber <gerberb@zenez.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'progress.c')
-rw-r--r--progress.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/progress.c b/progress.c
index d19f80c..55a8687 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);