From: Johannes Schindelin Date: Thu, 13 Apr 2006 23:09:48 +0000 (+0200) Subject: diff-options: add --stat (take 2) X-Git-Tag: v1.3.0-rc4~2^2~1 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=ece634d1478a9f1bf19eed8a6b7dee305fadd46e;p=git.git diff-options: add --stat (take 2) ... and a fix for an invalid free(): Signed-off-by: Junio C Hamano --- diff --git a/diff.c b/diff.c index 14ffc774..c120239e 100644 --- a/diff.c +++ b/diff.c @@ -266,7 +266,7 @@ static void show_stats(struct diffstat_t* data) char *qname = xmalloc(len + 1); quote_c_style(name, qname, NULL, 0); free(name); - name = qname; + data->files[i]->name = name = qname; } /* @@ -297,10 +297,10 @@ static void show_stats(struct diffstat_t* data) if (added < 0) { /* binary file */ printf(" %s%-*s | Bin\n", prefix, len, name); - continue; + goto free_diffstat_file; } else if (added + deleted == 0) { total_files--; - continue; + goto free_diffstat_file; } add = added; @@ -314,11 +314,11 @@ static void show_stats(struct diffstat_t* data) add = (add * max + max_change / 2) / max_change; del = total - add; } - /* TODO: binary */ printf(" %s%-*s |%5d %.*s%.*s\n", prefix, len, name, added + deleted, add, pluses, del, minuses); - free(name); + free_diffstat_file: + free(data->files[i]->name); free(data->files[i]); } free(data->files);