From e85e470f4bbb0dee67f85338bab6dcdf7ef65101 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 2 Sep 2010 14:55:31 +0400 Subject: [PATCH] Defensive bounds checking --- .../intellij/openapi/editor/impl/EditorMarkupModelImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java index ee4b317c9be7..81863eb455ab 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java @@ -700,12 +700,13 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark if (myEditorScrollbarTop == -1 || myEditorTargetHeight == -1) { recalcEditorDimensions(); } + final int safeY = Math.max(0, y - myEditorScrollbarTop); VisualPosition visual; if (myEditorSourceHeight < myEditorTargetHeight) { - visual = myEditor.xyToVisualPosition(new Point(0, y - myEditorScrollbarTop)); + visual = myEditor.xyToVisualPosition(new Point(0, safeY)); } else { - float fraction = Math.max(0, Math.min(1, (y - myEditorScrollbarTop) / (float)myEditorTargetHeight)); + float fraction = Math.max(0, Math.min(1, safeY / (float)myEditorTargetHeight)); final int lineCount = myEditorSourceHeight / myEditor.getLineHeight(); visual = new VisualPosition((int)(fraction * lineCount),0); }