git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 8/8] combine-diff: bail out early, if num_paths=0

From
Kirill Smelkov <kirr@mns.spb.ru>
Date
Feb 3, 2014, 12:47 UTC
Message-ID
<2dc2bcce19105cdd384f119328c06321cbea599a.1391430523.git.kirr@mns.spb.ru>
In-Reply-To
<cover.1391430523.git.kirr@mns.spb.ru>

That simplifies the code - instead of repeated checking for num_paths !=0, let's verify it once, and return if it is, and free following code from repeated ifs.

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
---
 combine-diff.c | 52 +++++++++++++++++++++++++++-------------------------
 1 file changed, 27 insertions(+), 25 deletions(-)
diff --git a/combine-diff.c b/combine-diff.c
index 3e3f328..c1f481f 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -1459,12 +1459,18 @@ void diff_tree_combined(const unsigned char *sha1,
 		}
 	}
 
+	free_pathspec(&diffopts.pathspec);
+
 	/* find out number of surviving paths */
 	for (num_paths = 0, p = paths; p; p = p->next)
 		num_paths++;
 
+	/* nothing to do, if no paths */
+	if (!num_paths)
+		return;
+
 	/* order paths according to diffcore_order */
-	if (opt->orderfile && num_paths) {
+	if (opt->orderfile) {
 		struct obj_order *o;
 
 		o = xmalloc(sizeof(*o) * num_paths);
@@ -1483,28 +1489,26 @@ void diff_tree_combined(const unsigned char *sha1,
 	}
 
 
-	if (num_paths) {
-		if (opt->output_format & (DIFF_FORMAT_RAW |
-					  DIFF_FORMAT_NAME |
-					  DIFF_FORMAT_NAME_STATUS)) {
-			for (p = paths; p; p = p->next)
-				show_raw_diff(p, num_parent, rev);
-			needsep = 1;
-		}
-		else if (opt->output_format &
-			 (DIFF_FORMAT_NUMSTAT|DIFF_FORMAT_DIFFSTAT))
-			needsep = 1;
-		else if (opt->output_format & DIFF_FORMAT_CALLBACK)
-			handle_combined_callback(opt, paths, num_parent, num_paths);
-
-		if (opt->output_format & DIFF_FORMAT_PATCH) {
-			if (needsep)
-				printf("%s%c", diff_line_prefix(opt),
-				       opt->line_termination);
-			for (p = paths; p; p = p->next)
-				show_patch_diff(p, num_parent, dense,
-						0, rev);
-		}
+	if (opt->output_format & (DIFF_FORMAT_RAW |
+				  DIFF_FORMAT_NAME |
+				  DIFF_FORMAT_NAME_STATUS)) {
+		for (p = paths; p; p = p->next)
+			show_raw_diff(p, num_parent, rev);
+		needsep = 1;
+	}
+	else if (opt->output_format &
+		 (DIFF_FORMAT_NUMSTAT|DIFF_FORMAT_DIFFSTAT))
+		needsep = 1;
+	else if (opt->output_format & DIFF_FORMAT_CALLBACK)
+		handle_combined_callback(opt, paths, num_parent, num_paths);
+
+	if (opt->output_format & DIFF_FORMAT_PATCH) {
+		if (needsep)
+			printf("%s%c", diff_line_prefix(opt),
+			       opt->line_termination);
+		for (p = paths; p; p = p->next)
+			show_patch_diff(p, num_parent, dense,
+					0, rev);
 	}
 
 	/* Clean things up */
@@ -1513,8 +1517,6 @@ void diff_tree_combined(const unsigned char *sha1,
 		paths = paths->next;
 		free(tmp);
 	}
-
-	free_pathspec(&diffopts.pathspec);
 }
 
 void diff_tree_combined_merge(const struct commit *commit, int dense,
-- 
1.9.rc1.181.g641f458
Previous: Junio C Hamano
Message 26 of 26 in “`log -c` speedup (part 2)”
  1. 0/8 `log -c` speedup (part 2)Kirill Smelkov, Feb 3, 2014
  2. 1/8 fixup! combine_diff: simplify intersect_paths() furtherKirill Smelkov, Feb 3, 2014
  3. Junio C HamanoFeb 3, 2014
  4. 2/8 tests: add checking that combine-diff emits only correct pathsKirill Smelkov, Feb 3, 2014
  5. Junio C HamanoFeb 3, 2014
  6. Kirill SmelkovFeb 5, 2014
  7. 3/8 tree-diff: no need to manually verify that there is no mode change for a pathKirill Smelkov, Feb 3, 2014
  8. Junio C HamanoFeb 3, 2014
  9. 4/8 tree-diff: no need to pass match to skip_uninteresting()Kirill Smelkov, Feb 3, 2014
  10. 5/8 combine-diff: move show_log_first logic/action out of paths scanningKirill Smelkov, Feb 3, 2014
  11. Junio C HamanoFeb 3, 2014
  12. 6/8 combine-diff: Move changed-paths scanning logic into its own functionKirill Smelkov, Feb 3, 2014
  13. 7/8 combine-diff: Fast changed-to-all-parents paths scanningKirill Smelkov, Feb 3, 2014
  14. Junio C HamanoFeb 3, 2014
  15. Junio C HamanoFeb 3, 2014
  16. Kirill SmelkovFeb 4, 2014
  17. Junio C HamanoFeb 4, 2014
  18. Kirill SmelkovFeb 5, 2014
  19. Junio C HamanoFeb 5, 2014
  20. Kirill SmelkovFeb 5, 2014
  21. Junio C HamanoFeb 5, 2014
  22. Kirill SmelkovFeb 5, 2014
  23. Junio C HamanoFeb 5, 2014
  24. Kirill SmelkovFeb 6, 2014
  25. Junio C HamanoFeb 4, 2014
  26. 8/8 combine-diff: bail out early, if num_paths=0Kirill Smelkov, Feb 3, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.