git: plan9front

Download patch

ref: d03b67430f47a034700122e9df447c3d6ae7008c
parent: f63dcb4b9b6b75347386c14429401d2d8d51db77
author: Ori Bernstein <ori@eigenstate.org>
date: Sat Sep 14 11:57:24 EDT 2024

merge3: fix assert in merge of identical deletions

--- a/sys/src/cmd/diff/merge3.c
+++ b/sys/src/cmd/diff/merge3.c
@@ -16,6 +16,8 @@
 
 	if (a > b && c > d)
 		return;
+	if(c > d)
+		d = c;
 	if(df->nchanges%1024 == 0)
 		df->changes = erealloc(df->changes, (df->nchanges+1024)*sizeof(df->changes[0]));
 	ch = &df->changes[df->nchanges++];
@@ -45,7 +47,7 @@
 		addchange(d, i1 , i0, j1, j0);
 	}
 	if (m == 0)
-		change(d, 1, 0, 1, d->len[1]);
+		addchange(d, 1, 0, 1, d->len[1]);
 	qsort(d->changes, d->nchanges, sizeof(Change), changecmp);
 }
 
@@ -70,8 +72,8 @@
 	ry = rc->newy;
 	if(ly - lx != ry - rx)
 		return 0;
-	assert(lx <= ly && ly < l->len[1]);
-	assert(rx <= ry && ry < r->len[1]);
+	assert(lx <= ly && ly <= l->len[1]);
+	assert(rx <= ry && ry <= r->len[1]);
 	Bseek(l->input[1], l->ixnew[lx-1], 0);
 	Bseek(r->input[1], r->ixnew[rx-1], 0);
 	for(i = 0; i <= (ly - lx); i++){
--- /dev/null
+++ b/sys/src/cmd/diff/test/merge-t12.c
@@ -1,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
--- /dev/null
+++ b/sys/src/cmd/diff/test/merge-t12.expected
@@ -1,0 +1,9 @@
+1
+2
+3
+4
+5
+6
+7
+8
+10
--- /dev/null
+++ b/sys/src/cmd/diff/test/merge-t12.l
@@ -1,0 +1,9 @@
+1
+2
+3
+4
+5
+6
+7
+8
+10
--- /dev/null
+++ b/sys/src/cmd/diff/test/merge-t12.r
@@ -1,0 +1,9 @@
+1
+2
+3
+4
+5
+6
+7
+8
+10
--- a/sys/src/cmd/diff/test/merge.rc
+++ b/sys/src/cmd/diff/test/merge.rc
@@ -1,6 +1,6 @@
 #!/bin/rc
 
-tests=`{seq 11}
+tests=`{seq 12}
 for(t in $tests){
 	echo ../$O.merge3 merge-t$t.l merge-t$t.c merge-t$t.r
 	../$O.merge3 merge-t$t.l merge-t$t.c merge-t$t.r > merge-t$t.out
--