diff options
| author | Junio C Hamano <gitster@pobox.com> | 2022-11-28 12:13:45 +0900 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2022-11-28 12:13:46 +0900 |
| commit | 613999cc5c951bc2c078caad59e339243f119a6e (patch) | |
| tree | bf60befea6698e410499e2e7cacdc93a48cf9967 /diff.c | |
| parent | Merge branch 'es/locate-httpd-module-location-in-test' (diff) | |
| parent | diff.c: use diff_free_queue() (diff) | |
| download | git-613999cc5c951bc2c078caad59e339243f119a6e.tar.gz git-613999cc5c951bc2c078caad59e339243f119a6e.zip | |
Merge branch 'sg/plug-line-log-leaks'
A handful of leaks in the line-log machinery have been plugged.
* sg/plug-line-log-leaks:
diff.c: use diff_free_queue()
line-log: free the diff queues' arrays when processing merge commits
line-log: free diff queue when processing non-merge commits
Diffstat (limited to 'diff.c')
| -rw-r--r-- | diff.c | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -5772,6 +5772,13 @@ void diff_free_filepair(struct diff_filepair *p) free(p); } +void diff_free_queue(struct diff_queue_struct *q) +{ + for (int i = 0; i < q->nr; i++) + diff_free_filepair(q->queue[i]); + free(q->queue); +} + const char *diff_aligned_abbrev(const struct object_id *oid, int len) { int abblen; @@ -6329,13 +6336,9 @@ static int diff_get_patch_id(struct diff_options *options, struct object_id *oid int diff_flush_patch_id(struct diff_options *options, struct object_id *oid, int diff_header_only) { struct diff_queue_struct *q = &diff_queued_diff; - int i; int result = diff_get_patch_id(options, oid, diff_header_only); - for (i = 0; i < q->nr; i++) - diff_free_filepair(q->queue[i]); - - free(q->queue); + diff_free_queue(q); DIFF_QUEUE_CLEAR(q); return result; @@ -6604,10 +6607,8 @@ void diff_flush(struct diff_options *options) if (output_format & DIFF_FORMAT_CALLBACK) options->format_callback(q, options, options->format_callback_data); - for (i = 0; i < q->nr; i++) - diff_free_filepair(q->queue[i]); free_queue: - free(q->queue); + diff_free_queue(q); DIFF_QUEUE_CLEAR(q); diff_free(options); |
