diff options
-rw-r--r-- | diff.c | 15 | ||||
-rw-r--r-- | diffcore-pathspec.c | 2 | ||||
-rw-r--r-- | diffcore-pickaxe.c | 2 | ||||
-rw-r--r-- | diffcore-rename.c | 7 | ||||
-rw-r--r-- | diffcore.h | 2 |
5 files changed, 15 insertions, 13 deletions
@@ -521,6 +521,13 @@ struct diff_filepair *diff_queue(struct diff_queue_struct *queue, return dp; } +void diff_free_filepair(struct diff_filepair *p) +{ + diff_free_filespec_data(p->one); + diff_free_filespec_data(p->two); + free(p); +} + static void diff_flush_raw(struct diff_filepair *p, int line_termination, int inter_name_termination) @@ -817,12 +824,8 @@ void diff_flush(int diff_output_style, int resolve_rename_copy) break; } } - for (i = 0; i < q->nr; i++) { - struct diff_filepair *p = q->queue[i]; - diff_free_filespec_data(p->one); - diff_free_filespec_data(p->two); - free(p); - } + for (i = 0; i < q->nr; i++) + diff_free_filepair(q->queue[i]); free(q->queue); q->queue = NULL; q->nr = q->alloc = 0; diff --git a/diffcore-pathspec.c b/diffcore-pathspec.c index fd11822aaf..c460b2e56d 100644 --- a/diffcore-pathspec.c +++ b/diffcore-pathspec.c @@ -59,7 +59,7 @@ void diffcore_pathspec(const char **pathspec) matches_pathspec(p->two->path, spec, speccnt)) diff_q(&outq, p); else - free(p); + diff_free_filepair(p); } free(q->queue); *q = outq; diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c index fea62d51a0..491900929f 100644 --- a/diffcore-pickaxe.c +++ b/diffcore-pickaxe.c @@ -49,7 +49,7 @@ void diffcore_pickaxe(const char *needle) contains(p->two, needle, len)) diff_q(&outq, p); if (onum == outq.nr) - free(p); + diff_free_filepair(p); } free(q->queue); *q = outq; diff --git a/diffcore-rename.c b/diffcore-rename.c index 81e4d9df3d..39a53a88ba 100644 --- a/diffcore-rename.c +++ b/diffcore-rename.c @@ -361,11 +361,8 @@ void diffcore_rename(int detect_rename, int minimum_score) else pair_to_free = p; } - if (pair_to_free) { - diff_free_filespec_data(pair_to_free->one); - diff_free_filespec_data(pair_to_free->two); - free(pair_to_free); - } + if (pair_to_free) + diff_free_filepair(pair_to_free); } diff_debug_queue("done copying original", &outq); diff --git a/diffcore.h b/diffcore.h index ee1955bf38..0f82bd933e 100644 --- a/diffcore.h +++ b/diffcore.h @@ -54,6 +54,8 @@ struct diff_filepair { (S_ISREG(mode) ? (S_IFREG | ce_permissions(mode)) : \ S_ISLNK(mode) ? S_IFLNK : S_IFDIR) +extern void diff_free_filepair(struct diff_filepair *); + extern int diff_unmodified_pair(struct diff_filepair *); struct diff_queue_struct { |