Skip to content

Commit

Permalink
diff-files --stat: do not dump core with unmerged index.
Browse files Browse the repository at this point in the history
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Apr 16, 2006
1 parent 1cd9508 commit cbdda02
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,8 @@ struct diffstat_t {
int alloc;
struct diffstat_file {
char *name;
unsigned is_unmerged:1;
unsigned is_binary:1;
unsigned int added, deleted;
} **files;
};
Expand Down Expand Up @@ -248,6 +250,8 @@ static void show_stats(struct diffstat_t* data)
for (i = 0; i < data->nr; i++) {
struct diffstat_file *file = data->files[i];

if (file->is_binary || file->is_unmerged)
continue;
if (max_change < file->added + file->deleted)
max_change = file->added + file->deleted;
len = strlen(file->name);
Expand Down Expand Up @@ -292,11 +296,15 @@ static void show_stats(struct diffstat_t* data)
if (max + len > 70)
max = 70 - len;

if (added < 0) {
/* binary file */
if (data->files[i]->is_binary) {
printf(" %s%-*s | Bin\n", prefix, len, name);
goto free_diffstat_file;
} else if (added + deleted == 0) {
}
else if (data->files[i]->is_unmerged) {
printf(" %s%-*s | Unmerged\n", prefix, len, name);
goto free_diffstat_file;
}
else if (added + deleted == 0) {
total_files--;
goto free_diffstat_file;
}
Expand Down Expand Up @@ -424,11 +432,16 @@ static void builtin_diffstat(const char *name_a, const char *name_b,

data = diffstat_add(diffstat, name_a ? name_a : name_b);

if (!one || !two) {
data->is_unmerged = 1;
return;
}

if (fill_mmfile(&mf1, one) < 0 || fill_mmfile(&mf2, two) < 0)
die("unable to read files to diff");

if (mmfile_is_binary(&mf1) || mmfile_is_binary(&mf2))
data->added = -1;
data->is_binary = 1;
else {
/* Crazy xdl interfaces.. */
xpparam_t xpp;
Expand Down

0 comments on commit cbdda02

Please sign in to comment.