aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java
index 89e71e6661..bf1bbda63b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java
@@ -49,6 +49,7 @@ import static org.eclipse.jgit.diff.DiffEntry.Side.OLD;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.BitSet;
import java.util.List;
import org.eclipse.jgit.JGitText;
@@ -216,6 +217,7 @@ class SimilarityRenameDetector {
long[] srcSizes = new long[srcs.size()];
long[] dstSizes = new long[dsts.size()];
+ BitSet dstTooLarge = null;
// Init the size arrays to some value that indicates that we haven't
// calculated the size yet. Since sizes cannot be negative, -1 will work
@@ -255,6 +257,11 @@ class SimilarityRenameDetector {
continue;
}
+ if (dstTooLarge != null && dstTooLarge.get(dstIdx)) {
+ pm.update(1);
+ continue;
+ }
+
long srcSize = srcSizes[srcIdx];
if (srcSize < 0) {
srcSize = size(OLD, srcEnt);
@@ -279,6 +286,9 @@ class SimilarityRenameDetector {
try {
d = hash(NEW, dstEnt);
} catch (TableFullException tableFull) {
+ if (dstTooLarge == null)
+ dstTooLarge = new BitSet(dsts.size());
+ dstTooLarge.set(dstIdx);
tableOverflow = true;
pm.update(1);
continue;