1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-10 21:16:09 +02:00

diff_flush(): leakfix.

We were leaking filepairs when output-format was set to
NO_OUTPUT.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-04-05 02:06:49 -07:00
parent fa0cdab537
commit 7d6c447145

44
diff.c
View File

@ -1225,28 +1225,34 @@ void diff_flush(struct diff_options *options)
for (i = 0; i < q->nr; i++) {
struct diff_filepair *p = q->queue[i];
if ((diff_output_format == DIFF_FORMAT_NO_OUTPUT) ||
(p->status == DIFF_STATUS_UNKNOWN))
continue;
if (p->status == 0)
switch (p->status) {
case DIFF_STATUS_UNKNOWN:
break;
case 0:
die("internal error in diff-resolve-rename-copy");
switch (diff_output_format) {
case DIFF_FORMAT_PATCH:
diff_flush_patch(p, options);
break;
case DIFF_FORMAT_RAW:
case DIFF_FORMAT_NAME_STATUS:
diff_flush_raw(p, line_termination,
inter_name_termination,
options);
break;
case DIFF_FORMAT_NAME:
diff_flush_name(p,
inter_name_termination,
line_termination);
break;
default:
switch (diff_output_format) {
case DIFF_FORMAT_PATCH:
diff_flush_patch(p, options);
break;
case DIFF_FORMAT_RAW:
case DIFF_FORMAT_NAME_STATUS:
diff_flush_raw(p, line_termination,
inter_name_termination,
options);
break;
case DIFF_FORMAT_NAME:
diff_flush_name(p,
inter_name_termination,
line_termination);
break;
case DIFF_FORMAT_NO_OUTPUT:
break;
}
}
diff_free_filepair(q->queue[i]);
diff_free_filepair(p);
}
free(q->queue);
q->queue = NULL;