Browse Source

Merge changes I50dcec81,Ieab28bb3

* changes:
  Fix empty block corner case in PatienceDiff
  Fix infinite loop in PatienceDiff
stable-0.10
Chris Aniszczyk 14 years ago committed by Code Review
parent
commit
033ab7f6f0
  1. 2
      org.eclipse.jgit/src/org/eclipse/jgit/diff/PatienceDiff.java
  2. 15
      org.eclipse.jgit/src/org/eclipse/jgit/diff/PatienceDiffIndex.java

2
org.eclipse.jgit/src/org/eclipse/jgit/diff/PatienceDiff.java

@ -182,6 +182,8 @@ public class PatienceDiff extends DiffAlgorithm {
break;
case EMPTY:
break;
default:
throw new IllegalStateException();
}

15
org.eclipse.jgit/src/org/eclipse/jgit/diff/PatienceDiffIndex.java

@ -244,7 +244,7 @@ final class PatienceDiffIndex<S extends Sequence> {
private void scanA() {
int ptr = region.beginA;
final int end = region.endA;
int pLast = pBegin - 1;
int pLast = pBegin;
SCAN: while (ptr < end) {
final int tIdx = hash(a, ptr);
@ -276,12 +276,7 @@ final class PatienceDiffIndex<S extends Sequence> {
// fact that pCommon is sorted by B, and its likely that
// matches in A appear in the same order as they do in B.
//
for (int pIdx = pLast + 1;; pIdx++) {
if (pIdx == pEnd)
pIdx = pBegin;
else if (pIdx == pLast)
break;
for (int pIdx = pLast;;) {
final long priorRec = pCommon[pIdx];
final int priorB = bOf(priorRec);
if (bs < priorB)
@ -291,6 +286,12 @@ final class PatienceDiffIndex<S extends Sequence> {
pLast = pIdx;
continue SCAN;
}
pIdx++;
if (pIdx == pEnd)
pIdx = pBegin;
if (pIdx == pLast)
break;
}
}

Loading…
Cancel
Save