diff --git a/platform/core-impl/src/com/intellij/openapi/editor/impl/RangeMarkerTree.java b/platform/core-impl/src/com/intellij/openapi/editor/impl/RangeMarkerTree.java index a9def5d1f808..58dd4a8e0b7f 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/impl/RangeMarkerTree.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/impl/RangeMarkerTree.java @@ -192,7 +192,9 @@ public class RangeMarkerTree extends IntervalTreeImpl node : affected) { + // reverse direction to visit leaves first - it's cheaper to compute maxEndOf for them first + for (int i = affected.size() - 1; i >= 0; i--) { + IntervalNode node = affected.get(i); // assumption: interval.getEndOffset() will never be accessed during remove() int startOffset = node.intervalStart(); int endOffset = node.intervalEnd();