Skip to content

Commit 9ca5df9

Browse files
byanggitster
authored andcommitted
Add a macro DIFF_QUEUE_CLEAR.
Refactor the diff_queue_struct code, this macro help to reset the structure. Signed-off-by: Bo Yang <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 3bf7886 commit 9ca5df9

File tree

5 files changed

+14
-16
lines changed

5 files changed

+14
-16
lines changed

diff.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2540,6 +2540,7 @@ static void run_checkdiff(struct diff_filepair *p, struct diff_options *o)
25402540
void diff_setup(struct diff_options *options)
25412541
{
25422542
memset(options, 0, sizeof(*options));
2543+
memset(&diff_queued_diff, 0, sizeof(diff_queued_diff));
25432544

25442545
options->file = stdout;
25452546

@@ -3457,8 +3458,7 @@ int diff_flush_patch_id(struct diff_options *options, unsigned char *sha1)
34573458
diff_free_filepair(q->queue[i]);
34583459

34593460
free(q->queue);
3460-
q->queue = NULL;
3461-
q->nr = q->alloc = 0;
3461+
DIFF_QUEUE_CLEAR(q);
34623462

34633463
return result;
34643464
}
@@ -3586,8 +3586,7 @@ void diff_flush(struct diff_options *options)
35863586
diff_free_filepair(q->queue[i]);
35873587
free_queue:
35883588
free(q->queue);
3589-
q->queue = NULL;
3590-
q->nr = q->alloc = 0;
3589+
DIFF_QUEUE_CLEAR(q);
35913590
if (options->close_file)
35923591
fclose(options->file);
35933592

@@ -3609,8 +3608,7 @@ static void diffcore_apply_filter(const char *filter)
36093608
int i;
36103609
struct diff_queue_struct *q = &diff_queued_diff;
36113610
struct diff_queue_struct outq;
3612-
outq.queue = NULL;
3613-
outq.nr = outq.alloc = 0;
3611+
DIFF_QUEUE_CLEAR(&outq);
36143612

36153613
if (!filter)
36163614
return;
@@ -3678,8 +3676,7 @@ static void diffcore_skip_stat_unmatch(struct diff_options *diffopt)
36783676
int i;
36793677
struct diff_queue_struct *q = &diff_queued_diff;
36803678
struct diff_queue_struct outq;
3681-
outq.queue = NULL;
3682-
outq.nr = outq.alloc = 0;
3679+
DIFF_QUEUE_CLEAR(&outq);
36833680

36843681
for (i = 0; i < q->nr; i++) {
36853682
struct diff_filepair *p = q->queue[i];

diffcore-break.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,7 @@ void diffcore_break(int break_score)
162162
if (!merge_score)
163163
merge_score = DEFAULT_MERGE_SCORE;
164164

165-
outq.nr = outq.alloc = 0;
166-
outq.queue = NULL;
165+
DIFF_QUEUE_CLEAR(&outq);
167166

168167
for (i = 0; i < q->nr; i++) {
169168
struct diff_filepair *p = q->queue[i];
@@ -256,8 +255,7 @@ void diffcore_merge_broken(void)
256255
struct diff_queue_struct outq;
257256
int i, j;
258257

259-
outq.nr = outq.alloc = 0;
260-
outq.queue = NULL;
258+
DIFF_QUEUE_CLEAR(&outq);
261259

262260
for (i = 0; i < q->nr; i++) {
263261
struct diff_filepair *p = q->queue[i];

diffcore-pickaxe.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ void diffcore_pickaxe(const char *needle, int opts)
5555
int i, has_changes;
5656
regex_t regex, *regexp = NULL;
5757
struct diff_queue_struct outq;
58-
outq.queue = NULL;
59-
outq.nr = outq.alloc = 0;
58+
DIFF_QUEUE_CLEAR(&outq);
6059

6160
if (opts & DIFF_PICKAXE_REGEX) {
6261
int err;

diffcore-rename.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,8 +569,7 @@ void diffcore_rename(struct diff_options *options)
569569
/* At this point, we have found some renames and copies and they
570570
* are recorded in rename_dst. The original list is still in *q.
571571
*/
572-
outq.queue = NULL;
573-
outq.nr = outq.alloc = 0;
572+
DIFF_QUEUE_CLEAR(&outq);
574573
for (i = 0; i < q->nr; i++) {
575574
struct diff_filepair *p = q->queue[i];
576575
struct diff_filepair *pair_to_free = NULL;

diffcore.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ struct diff_queue_struct {
9292
int alloc;
9393
int nr;
9494
};
95+
#define DIFF_QUEUE_CLEAR(q) \
96+
do { \
97+
(q)->queue = NULL; \
98+
(q)->nr = (q)->alloc = 0; \
99+
} while(0);
95100

96101
extern struct diff_queue_struct diff_queued_diff;
97102
extern struct diff_filepair *diff_queue(struct diff_queue_struct *,

0 commit comments

Comments
 (0)