combine-diff: combine_diff_path.len is not needed anymore
The field was used in order to speed-up name comparison and also to mark removed paths by setting it to 0. Because the updated code does significantly less strcmp and also just removes paths from the list and free right after we know a path will not be needed, it is not needed anymore. Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kirill Smelkov committed
Jan 20, 2014 at 20:20 UTC
af82c7880f1a3df1655092da11c80603260384a0
3 files changed
+9
-24
combine-diff.c
+9
-21
@@ -31,7 +31,6 @@ static struct combine_diff_path *intersect_paths(struct combine_diff_path *curr,
31
p->path = (char *) &(p->parent[num_parent]);
32
memcpy(p->path, path, len);
33
p->path[len] = 0;
34
- p->len = len;
34
p->next = NULL;
35
memset(p->parent, 0,
36
sizeof(p->parent[0]) * num_parent);
@@ -1234,8 +1233,6 @@ void show_combined_diff(struct combine_diff_path *p,
1233
{
1234
struct diff_options *opt = &rev->diffopt;
1235
1237
- if (!p->len)
1238
- return;
1236
if (opt->output_format & (DIFF_FORMAT_RAW |
1237
DIFF_FORMAT_NAME |
1238
DIFF_FORMAT_NAME_STATUS))
@@ -1299,11 +1296,8 @@ static void handle_combined_callback(struct diff_options *opt,
1296
q.queue = xcalloc(num_paths, sizeof(struct diff_filepair *));
1297
q.alloc = num_paths;
1298
q.nr = num_paths;
1302
- for (i = 0, p = paths; p; p = p->next) {
1303
- if (!p->len)
1304
- continue;
1299
+ for (i = 0, p = paths; p; p = p->next)
1300
q.queue[i++] = combined_pair(p, num_parent);
1306
- }
1301
opt->format_callback(&q, opt, opt->format_callback_data);
1302
for (i = 0; i < num_paths; i++)
1303
free_combined_pair(q.queue[i]);
@@ -1369,11 +1363,9 @@ void diff_tree_combined(const unsigned char *sha1,
1363
diff_flush(&diffopts);
1364
}
1365
1372
- /* find out surviving paths */
1373
- for (num_paths = 0, p = paths; p; p = p->next) {
1374
- if (p->len)
1375
- num_paths++;
1376
- }
1366
+ /* find out number of surviving paths */
1367
+ for (num_paths = 0, p = paths; p; p = p->next)
1368
+ num_paths++;
1369
1370
/* order paths according to diffcore_order */
1371
if (opt->orderfile && num_paths) {
@@ -1399,10 +1391,8 @@ void diff_tree_combined(const unsigned char *sha1,
1391
if (opt->output_format & (DIFF_FORMAT_RAW |
1392
DIFF_FORMAT_NAME |
1393
DIFF_FORMAT_NAME_STATUS)) {
1402
- for (p = paths; p; p = p->next) {
1403
- if (p->len)
1404
- show_raw_diff(p, num_parent, rev);
1405
- }
1394
+ for (p = paths; p; p = p->next)
1395
+ show_raw_diff(p, num_parent, rev);
1396
needsep = 1;
1397
}
1398
else if (opt->output_format &
@@ -1415,11 +1405,9 @@ void diff_tree_combined(const unsigned char *sha1,
1405
if (needsep)
1406
printf("%s%c", diff_line_prefix(opt),
1407
opt->line_termination);
1418
- for (p = paths; p; p = p->next) {
1419
- if (p->len)
1420
- show_patch_diff(p, num_parent, dense,
1421
- 0, rev);
1422
- }
1408
+ for (p = paths; p; p = p->next)
1409
+ show_patch_diff(p, num_parent, dense,
1410
+ 0, rev);
1411
}
1412
}
1413
diff-lib.c
-2
@@ -124,7 +124,6 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
124
dpath->path = (char *) &(dpath->parent[5]);
125
126
dpath->next = NULL;
127
- dpath->len = path_len;
127
memcpy(dpath->path, ce->name, path_len);
128
dpath->path[path_len] = '\0';
129
hashclr(dpath->sha1);
@@ -326,7 +325,6 @@ static int show_modified(struct rev_info *revs,
325
p = xmalloc(combine_diff_path_size(2, pathlen));
326
p->path = (char *) &p->parent[2];
327
p->next = NULL;
329
- p->len = pathlen;
328
memcpy(p->path, new->name, pathlen);
329
p->path[pathlen] = 0;
330
p->mode = mode;
diff.h
-1
@@ -198,7 +198,6 @@ extern int diff_root_tree_sha1(const unsigned char *new, const char *base,
198
199
struct combine_diff_path {
200
struct combine_diff_path *next;
201
- int len;
201
char *path;
202
unsigned int mode;
203
unsigned char sha1[20];