Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce2010-08-06 16:48:50 +0000
committerShawn O. Pearce2010-08-06 16:48:50 +0000
commit09130b8731cf17d24c4b0a77c8faf532bf22db2c (patch)
treedcfd3a6b3e14d94210069fbce75fbad64e70b809
parent8e9cc826e9275ce0e7ab51cc933923eb3b5f16ae (diff)
parente2f5716c940c5da22cbb3b0b08cb4ee7f2970580 (diff)
downloadjgit-09130b8731cf17d24c4b0a77c8faf532bf22db2c.tar.gz
jgit-09130b8731cf17d24c4b0a77c8faf532bf22db2c.tar.xz
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.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java10
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++;
}
}

Back to the top