IDEA-82215

This commit is contained in:
Alexey Kudravtsev
2012-03-06 12:44:49 +04:00
parent 5bf826ebf0
commit 030943bca3
@@ -516,16 +516,18 @@ public abstract class IntervalTreeImpl<T extends MutableInterval> extends RedBla
@NotNull
DisposableIterator<T> overlappingIterator(final int startOffset, final int endOffset) {
ProperTextRange.assertProperRange(startOffset, endOffset, "");
l.readLock().lock();
final IntervalNode<T> firstOverlap = findMinOverlappingWith(getRoot(), new TextRangeInterval(startOffset, endOffset), modCount, 0);
if (firstOverlap == null) {
l.readLock().unlock();
return DisposableIterator.EMPTY;
}
final int firstOverlapDelta = firstOverlap.computeDeltaUpToRoot();
final int firstOverlapStart = firstOverlap.intervalStart() + firstOverlapDelta;
final int modCountBefore = modCount;
l.readLock().lock();
return new DisposableIterator<T>() {
private IntervalNode<T> currentNode = firstOverlap;
private int deltaUpToRootExclusive = firstOverlapDelta-firstOverlap.delta;