diff --git a/platform/diff-api/src/com/intellij/diff/util/LineCol.java b/platform/diff-api/src/com/intellij/diff/util/LineCol.java index 95201b9ed32b..04cd28ebc819 100644 --- a/platform/diff-api/src/com/intellij/diff/util/LineCol.java +++ b/platform/diff-api/src/com/intellij/diff/util/LineCol.java @@ -60,9 +60,16 @@ public class LineCol { @NotNull public static LineCol fromOffset(@NotNull Document document, int offset) { - int line = document.getLineNumber(offset); - int column = offset - document.getLineStartOffset(line); - return new LineCol(line, column); + if (offset < document.getTextLength()) { + int line = document.getLineNumber(offset); + int column = offset - document.getLineStartOffset(line); + return new LineCol(line, column); + } + else { + int line = Math.max(0, document.getLineCount() - 1); + int column = document.getLineEndOffset(line) - document.getLineStartOffset(line); + return new LineCol(line, column); + } } @NotNull @@ -79,7 +86,8 @@ public class LineCol { } public int toOffset(@NotNull Document document) { - return document.getLineStartOffset(line) + column; + if (line >= document.getLineCount()) return document.getTextLength(); + return Math.min(document.getLineStartOffset(line) + column, document.getLineEndOffset(line)); } public int toOffset(@NotNull Editor editor) {