diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2010-08-06 09:48:50 -0700 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2010-08-06 09:48:50 -0700 |
commit | 09130b8731cf17d24c4b0a77c8faf532bf22db2c (patch) | |
tree | dcfd3a6b3e14d94210069fbce75fbad64e70b809 | |
parent | 8e9cc826e9275ce0e7ab51cc933923eb3b5f16ae (diff) | |
parent | e2f5716c940c5da22cbb3b0b08cb4ee7f2970580 (diff) | |
download | jgit-09130b8731cf17d24c4b0a77c8faf532bf22db2c.tar.gz jgit-09130b8731cf17d24c4b0a77c8faf532bf22db2c.zip |
Merge branch 'rename-bug'
* rename-bug:
Fix ArrayIndexOutOfBounds on non-square exact rename matrix
Conflicts:
org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java
Change-Id: Ie0b8dd3e1ec174f79ba39dc4706bb0694cc8be29
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java | 5 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java | 10 |
2 files changed, 9 insertions, 6 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java index 26116d2504..862fc0a594 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java @@ -173,17 +173,20 @@ public class RenameDetectorTest extends RepositoryTestCase { DiffEntry c = DiffEntry.add("c.txt", foo); DiffEntry d = DiffEntry.delete("d.txt", foo); + DiffEntry e = DiffEntry.add("the_e_file.txt", foo); // Add out of order to avoid first-match succeeding rd.add(a); rd.add(d); + rd.add(e); rd.add(b); rd.add(c); List<DiffEntry> entries = rd.compute(); - assertEquals(2, entries.size()); + assertEquals(3, entries.size()); assertRename(d, c, 100, entries.get(0)); assertRename(b, a, 100, entries.get(1)); + assertCopy(d, e, 100, entries.get(2)); } public void testExactRename_OneDeleteManyAdds() throws Exception { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java index 3ae3dc422c..9c1310ab81 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java @@ -508,14 +508,14 @@ public class RenameDetector { List<DiffEntry> dels = (List<DiffEntry>) o; long[] matrix = new long[dels.size() * adds.size()]; int mNext = 0; - for (int addIdx = 0; addIdx < adds.size(); addIdx++) { - String addedName = adds.get(addIdx).newPath; + for (int delIdx = 0; delIdx < dels.size(); delIdx++) { + String deletedName = dels.get(delIdx).oldPath; - for (int delIdx = 0; delIdx < dels.size(); delIdx++) { - String deletedName = dels.get(delIdx).oldPath; + for (int addIdx = 0; addIdx < adds.size(); addIdx++) { + String addedName = adds.get(addIdx).newPath; int score = SimilarityRenameDetector.nameScore(addedName, deletedName); - matrix[mNext] = SimilarityRenameDetector.encode(score, addIdx, delIdx); + matrix[mNext] = SimilarityRenameDetector.encode(score, delIdx, addIdx); mNext++; } } |