From 030943bca31003f80c38b9ce1f73fd7dc2f314c7 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 6 Mar 2012 12:35:46 +0400 Subject: [PATCH] IDEA-82215 --- .../com/intellij/openapi/editor/impl/IntervalTreeImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java b/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java index 67b8ff194e43..1947299670c1 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java @@ -516,16 +516,18 @@ public abstract class IntervalTreeImpl extends RedBla @NotNull DisposableIterator overlappingIterator(final int startOffset, final int endOffset) { ProperTextRange.assertProperRange(startOffset, endOffset, ""); + + l.readLock().lock(); + final IntervalNode 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() { private IntervalNode currentNode = firstOverlap; private int deltaUpToRootExclusive = firstOverlapDelta-firstOverlap.delta;