diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java index fb201c504137..4cb50d3f0949 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java @@ -840,6 +840,11 @@ public class CaretImpl extends UserDataHolderBase implements Caret, Dumpable { public Caret clone(boolean above) { assertIsDispatchThread(); int lineShift = above ? -1 : 1; + LogicalPosition oldPosition = getLogicalPosition(); + int newLine = oldPosition.line + lineShift; + if (newLine < 0 || newLine >= myEditor.getDocument().getLineCount()) { + return null; + } final CaretImpl clone = cloneWithoutSelection(); final int newSelectionStartOffset; final int newSelectionEndOffset; @@ -875,12 +880,6 @@ public class CaretImpl extends UserDataHolderBase implements Caret, Dumpable { newSelectionStartColumn = -1; newSelectionEndColumn = -1; } - LogicalPosition oldPosition = getLogicalPosition(); - int newLine = oldPosition.line + lineShift; - if (newLine < 0 || newLine >= myEditor.getDocument().getLineCount()) { - Disposer.dispose(clone); - return null; - } clone.moveToLogicalPosition(new LogicalPosition(newLine, myLastColumnNumber), false, null, false); clone.myLastColumnNumber = myLastColumnNumber; clone.myDesiredX = myDesiredX >= 0 ? myDesiredX : getCurrentX();