Java: Prevent IOOBE in extract method preview diff (IDEA-189384)

This commit is contained in:
Pavel Dolgov
2018-04-12 12:18:12 +03:00
parent 34bda668a3
commit 7cec5f7c06
2 changed files with 4 additions and 3 deletions
@@ -273,8 +273,9 @@ class PreviewDiffPanel extends BorderLayoutPanel implements Disposable, PreviewT
@NotNull
private static TextRange getLinesRange(@NotNull TextRange textRange, @NotNull Document document) {
return new TextRange(document.getLineStartOffset(document.getLineNumber(textRange.getStartOffset())),
document.getLineEndOffset(document.getLineNumber(textRange.getEndOffset())) + 1);
int startLine = document.getLineNumber(textRange.getStartOffset());
int endLine = document.getLineNumber(Math.min(textRange.getEndOffset(), document.getTextLength()));
return new TextRange(document.getLineStartOffset(startLine), document.getLineEndOffset(endLine));
}
private static void doExtractImpl(@NotNull JavaDuplicatesExtractMethodProcessor processor,
@@ -99,7 +99,7 @@ class PreviewDiffRequest extends SimpleDiffRequest {
int newOffset = e.getEditor().logicalPositionToOffset(e.getNewPosition());
for (Map.Entry<FragmentNode, Couple<TextRange>> entry : myLinesBounds.entrySet()) {
TextRange range = mySideGetter.apply(entry.getValue());
if (range.contains(newOffset)) {
if (range.containsOffset(newOffset)) {
mySelectNode.consume(entry.getKey());
break;
}