From c860105b1496c8ada57d060eddbd865375309b48 Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Thu, 25 Nov 2010 14:37:08 +0300 Subject: [PATCH] IDEA-61798 After using RM for a while, I sometimes lose part of the chrome Added check for the logical line number correctness --- .../src/com/intellij/openapi/editor/ex/util/SegmentArray.java | 4 ++-- .../src/com/intellij/openapi/editor/impl/EditorImpl.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/SegmentArray.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/SegmentArray.java index 520e2b9c8da1..9e37fb62028a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/SegmentArray.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/SegmentArray.java @@ -238,14 +238,14 @@ public class SegmentArray { public int getSegmentStart(int index) { if (index < 0 || index >= mySegmentCount) { - throw new IndexOutOfBoundsException("Wrong line: " + index); + throw new IndexOutOfBoundsException("Wrong line: " + index + ". Available lines count: " + mySegmentCount); } return myStarts[index]; } public int getSegmentEnd(int index) { if (index < 0 || index >= mySegmentCount) { - throw new IndexOutOfBoundsException("Wrong line: " + index); + throw new IndexOutOfBoundsException("Wrong line: " + index + ". Available lines count: " + mySegmentCount); } return myEnds[index]; } 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 b2db014039fe..3aa700fda5d4 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 @@ -1603,6 +1603,9 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (!getFoldingModel().isOffsetCollapsed(startOffset)) { if (visibleStartLine >= startLineNumber && visibleStartLine <= endLineNumber) { int logStartLine = offsetToLogicalPosition(startOffset).line; + if (logStartLine >= myDocument.getLineCount()) { + return; + } LogicalPosition logPosition = offsetToLogicalPosition(myDocument.getLineEndOffset(logStartLine)); Point end = logicalPositionToXY(logPosition); int charWidth = EditorUtil.getSpaceWidth(Font.PLAIN, this);