diff --git a/platform/platform-impl/src/com/intellij/execution/impl/AsyncFilterRunner.java b/platform/platform-impl/src/com/intellij/execution/impl/AsyncFilterRunner.java index 53fa4cd40fc0..fd67e3707f31 100644 --- a/platform/platform-impl/src/com/intellij/execution/impl/AsyncFilterRunner.java +++ b/platform/platform-impl/src/com/intellij/execution/impl/AsyncFilterRunner.java @@ -135,7 +135,7 @@ class AsyncFilterRunner { List results = new ArrayList<>(); for (LineHighlighter task : tasks) { ProgressManager.checkCanceled(); - if (!marker.isValid()) return FilterResults.EMPTY; + if (!marker.isValid() || marker.getEndOffset() == 0) return FilterResults.EMPTY; ContainerUtil.addIfNotNull(results, task.compute()); } return new FilterResults(markerOffset, marker, results); @@ -146,8 +146,8 @@ class AsyncFilterRunner { private static LineHighlighter processLine(Document document, Filter filter, int line) { int lineEnd = document.getLineEndOffset(line); int endOffset = lineEnd + (lineEnd < document.getTextLength() ? 1 /* for \n */ : 0); - String text = EditorHyperlinkSupport.getLineText(document, line, true); - return () -> checkRange(filter, endOffset, filter.applyFilter(text, endOffset)); + CharSequence text = EditorHyperlinkSupport.getLineSequence(document, line, true); + return () -> checkRange(filter, endOffset, filter.applyFilter(text.toString(), endOffset)); } private static Filter.Result checkRange(Filter filter, int endOffset, Filter.Result result) { diff --git a/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java b/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java index 2af4e82824e1..ef17f5400686 100644 --- a/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java +++ b/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java @@ -371,11 +371,15 @@ public class EditorHyperlinkSupport { @NotNull public static String getLineText(@NotNull Document document, int lineNumber, boolean includeEol) { + return getLineSequence(document, lineNumber, includeEol).toString(); + } + + static CharSequence getLineSequence(@NotNull Document document, int lineNumber, boolean includeEol) { int endOffset = document.getLineEndOffset(lineNumber); if (includeEol && endOffset < document.getTextLength()) { endOffset++; } - return document.getImmutableCharSequence().subSequence(document.getLineStartOffset(lineNumber), endOffset).toString(); + return document.getImmutableCharSequence().subSequence(document.getLineStartOffset(lineNumber), endOffset); } private static class HyperlinkInfoTextAttributes extends TextAttributes {