diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index aae9bffc6093..2bf806f03701 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -2158,6 +2158,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi public int logicalPositionToOffset(@NotNull LogicalPosition pos) { assertReadAccess(); + assertIsDispatchThread(); if (myDocument.getLineCount() == 0) return 0; if (pos.line < 0) throw new IndexOutOfBoundsException("Wrong line: " + pos.line); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java index 548f983e306e..1865603f46eb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java @@ -30,6 +30,7 @@ public abstract class HighlighterList { private final SortedList mySegmentHighlighters = new SortedList(MY_RANGE_COMPARATOR) { @Override protected void sort(List delegate) { + assertDispatchThread(); Iterator it = delegate.iterator(); boolean needSort = false; RangeHighlighterImpl lastHighlighter = null; @@ -69,8 +70,9 @@ public abstract class HighlighterList { private static final Comparator MY_RANGE_COMPARATOR = new Comparator() { public int compare(RangeHighlighterImpl r1, RangeHighlighterImpl r2) { - if (r1.getAffectedAreaStartOffset() != r2.getAffectedAreaStartOffset()) { - return r1.getAffectedAreaStartOffset() - r2.getAffectedAreaStartOffset(); + int o = r1.getAffectedAreaStartOffset() - r2.getAffectedAreaStartOffset(); + if (o != 0) { + return o; } if (r1.getLayer() != r2.getLayer()) {