summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2011-05-16 11:28:23 -0700
committerShawn O. Pearce <spearce@spearce.org>2011-05-16 11:28:23 -0700
commitc2b87d59a0ca13f1444ea3a62decfa3f04ee7600 (patch)
tree4f64d931a1a0f98484b956f6e42d5dc2c9b89204
parent4b4df4ccf8e59273a7d78de2b378d530716b6f2d (diff)
downloadjgit-c2b87d59a0ca13f1444ea3a62decfa3f04ee7600.tar.gz
jgit-c2b87d59a0ca13f1444ea3a62decfa3f04ee7600.zip
Fix diff bug on inserted line
For the following patch on the linux 2.6.32 tag: --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c @@ -685,6 +685,7 @@ static void enqueue_sleeper(struct cfs_rq *cfs_rq, struct sc static void check_spread(struct cfs_rq *cfs_rq, struct sched_entity *se) { +#if 0 #ifdef CONFIG_SCHED_DEBUG s64 d = se->vruntime - cfs_rq->min_vruntime; @@ -694,6 +695,7 @@ static void check_spread(struct cfs_rq *cfs_rq, struct sched if (d > 3*sysctl_sched_latency) schedstat_inc(cfs_rq, nr_spread_over); #endif +#endif } static void JGit produced an incorrect diff, attempting to add a new "}" instead of the new "#endif" at the end of the hunk. This was caused by a prior fix for bug 328895 where we wanted to "slide" a diff down in the file when adding a new method/function and want to show the closing curly brace as being added after the new method, rather than added onto the end of the prior function or method just before the insertion point. Bug: 345956 Change-Id: I32b9e24f1e2980258b1b39dd1807919ab1c5f9b2 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java2
2 files changed, 10 insertions, 2 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
index 85b5eb7c0b..b8f8dcb5ad 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
@@ -191,7 +191,15 @@ public abstract class AbstractDiffTestCase {
public void testEdit_InsertNearCommonTail() {
EditList r = diff(t("aq}nb"), t("aCq}nD}nb"));
assertEquals(new Edit(1, 1, 1, 2), r.get(0));
- assertEquals(new Edit(3, 3, 4, 7), r.get(1));
+ assertEquals(new Edit(4, 4, 5, 8), r.get(1));
+ assertEquals(2, r.size());
+ }
+
+ @Test
+ public void testEdit_LinuxBug() {
+ EditList r = diff(t("a{bcdE}z"), t("a{0bcdEE}z"));
+ assertEquals(new Edit(2, 2, 2, 3), r.get(0));
+ assertEquals(new Edit(6, 6, 7, 8), r.get(1));
assertEquals(2, r.size());
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
index b20e3258b6..96f4d11857 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffAlgorithm.java
@@ -126,7 +126,7 @@ public abstract class DiffAlgorithm {
Edit last = e.get(e.size() - 1);
if (last.getType() == Edit.Type.INSERT) {
while (last.endB < b.size()
- && cmp.equals(b, last.beginB, b, region.endB)) {
+ && cmp.equals(b, last.beginB, b, last.endB)) {
last.beginA++;
last.endA++;
last.beginB++;