diff.c: use diff_free_queue()

Use diff_free_queue() instead of open-coding it. This shortens the code and make it less repetitive. Note that the second hunk in diff_flush() is interesting, because the 'free_queue' label separates the loop freeing the queue's filepairs from free()-ing the queue's internal array. This is somewhat suspicious, but it was not an issue before: there is only one place from where we jump to this label with a goto, and that is protected by an 'if (!q->nr && ...)' condition, i.e. we only skipped the loop freeing the filepairs when there were no filepairs in the queue to begin with. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>

SZEDER Gábor committed Nov 2, 2022 at 23:01 UTC 586d8b5052f6b98c262c872f54216e39f3d56625
1 file changed +2 -8
diff.c
+2 -8
@@ -6337,13 +6337,9 @@ static int diff_get_patch_id(struct diff_options *options, struct object_id *oid
6337 int diff_flush_patch_id(struct diff_options *options, struct object_id *oid, int diff_header_only)
6338 {
6339 struct diff_queue_struct *q = &diff_queued_diff;
6340 - int i;
6340 int result = diff_get_patch_id(options, oid, diff_header_only);
6341
6343 - for (i = 0; i < q->nr; i++)
6344 - diff_free_filepair(q->queue[i]);
6345 -
6346 - free(q->queue);
6342 + diff_free_queue(q);
6343 DIFF_QUEUE_CLEAR(q);
6344
6345 return result;
@@ -6612,10 +6608,8 @@ void diff_flush(struct diff_options *options)
6608 if (output_format & DIFF_FORMAT_CALLBACK)
6609 options->format_callback(q, options, options->format_callback_data);
6610
6615 - for (i = 0; i < q->nr; i++)
6616 - diff_free_filepair(q->queue[i]);
6611 free_queue:
6618 - free(q->queue);
6612 + diff_free_queue(q);
6613 DIFF_QUEUE_CLEAR(q);
6614 diff_free(options);
6615