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];