... and a fix for an invalid free(): --- diff.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) 14d8e3c7cda1e2aaff62375fe34db2458d302173 diff --git a/diff.c b/diff.c index ad8478b..2968153 100644 --- a/diff.c +++ b/diff.c @@ -266,7 +266,7 @@ static void show_stats(struct diffstat_t 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 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 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); -- 1.3.0.rc3.g9813 - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html