1
0
mirror of https://github.com/git/git.git synced 2024-09-23 04:52:59 +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

16
diff.c
View File

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