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

[PATCH 2/4] xdiff/xhistogram: rework handling of recursed results

From
Tay Ray Chuan <rctay89@gmail.com>
Date
Aug 1, 2011, 04:20 UTC
Message-ID
<1312172410-4380-3-git-send-email-rctay89@gmail.com>
In-Reply-To
<1312172410-4380-2-git-send-email-rctay89@gmail.com>

Previously we were over-complicating matters by trying to combine the recursed results. Now, terminate immediately if a recursive call failed and return its result.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---
 xdiff/xhistogram.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/xdiff/xhistogram.c b/xdiff/xhistogram.c
index 391333a..9cb69ea 100644
--- a/xdiff/xhistogram.c
+++ b/xdiff/xhistogram.c
@@ -339,21 +339,22 @@ static int histogram_diff(xpparam_t const *xpp, xdfenv_t *env,
 	if (find_lcs(&index, &lcs, line1, count1, line2, count2))
 		result = fall_back_to_classic_diff(&index, line1, count1, line2, count2);
 	else {
-		result = 0;
 		if (lcs.begin1 == 0 && lcs.begin2 == 0) {
 			int ptr;
 			for (ptr = 0; ptr < count1; ptr++)
 				env->xdf1.rchg[line1 + ptr - 1] = 1;
 			for (ptr = 0; ptr < count2; ptr++)
 				env->xdf2.rchg[line2 + ptr - 1] = 1;
+			result = 0;
 		} else {
-			result = histogram_diff(xpp, env,
+			if (result = histogram_diff(xpp, env,
 				line1, lcs.begin1 - line1,
-				line2, lcs.begin2 - line2);
-			result = histogram_diff(xpp, env,
+				line2, lcs.begin2 - line2))
+				goto cleanup;
+			if (result = histogram_diff(xpp, env,
 				lcs.end1 + 1, LINE_END(1) - lcs.end1,
-				lcs.end2 + 1, LINE_END(2) - lcs.end2);
-			result *= -1;
+				lcs.end2 + 1, LINE_END(2) - lcs.end2))
+				goto cleanup;
 		}
 	}
 
-- 
1.7.3.4.730.g67af1.dirty
Previous: Tay Ray ChuanNext: Tay Ray Chuan
Message 22 of 24 in “teach --histogram to diff”
  1. 0/3 teach --histogram to diffTay Ray Chuan, Jul 12, 2011
  2. 1/3 teach --histogram to diffTay Ray Chuan, Jul 12, 2011
  3. 2/3 xdiff/xprepare: skip classificationTay Ray Chuan, Jul 12, 2011
  4. 3/3 xdiff/xprepare: use a smaller sample size for histogram diffTay Ray Chuan, Jul 12, 2011
  5. Junio C HamanoJul 12, 2011
  6. Tay Ray ChuanJul 13, 2011
  7. Shawn PearceJul 12, 2011
  8. Junio C HamanoJul 12, 2011
  9. Tay Ray ChuanJul 13, 2011
  10. Tay Ray ChuanJul 13, 2011
  11. 0/8 teach --histogram to diffTay Ray Chuan, Aug 1, 2011
  12. 1/8 xdiff/xprepare: use memset()Tay Ray Chuan, Aug 1, 2011
  13. 2/8 do away with xdl_mmfile_next()Tay Ray Chuan, Aug 1, 2011
  14. 3/8 xdiff/xprepare: refactor abort cleanupsTay Ray Chuan, Aug 1, 2011
  15. 4/8 xdiff/xpatience: factor out fall-back-diff functionTay Ray Chuan, Aug 1, 2011
  16. 5/8 t4033-diff-patience: factor out testsTay Ray Chuan, Aug 1, 2011
  17. 6/8 teach --histogram to diffTay Ray Chuan, Aug 1, 2011
  18. 7/8 xdiff/xprepare: skip classificationTay Ray Chuan, Aug 1, 2011
  19. 8/8 xdiff/xprepare: use a smaller sample size for histogram diffTay Ray Chuan, Aug 1, 2011
  20. 0/4 changes for rc/histogram-diff in 'next'Tay Ray Chuan, Aug 1, 2011
  21. 1/4 xdiff: do away with xdl_mmfile_next()Tay Ray Chuan, Aug 1, 2011
  22. 2/4 xdiff/xhistogram: rework handling of recursed resultsTay Ray Chuan, Aug 1, 2011
  23. 3/4 xdiff/xhistogram: rely on xdl_trim_ends()Tay Ray Chuan, Aug 1, 2011
  24. 4/4 xdiff/xhistogram: drop need for additional variableTay Ray Chuan, Aug 1, 2011

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.