From 501c21024d431fb586c3393d36021207c2d25c3e Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 4 Sep 2019 21:42:48 +0200 Subject: [PATCH] don't throw InvalidVirtualFileAccessException from refreshAndFindFileByPath GitOrigin-RevId: fecb42a47d5f0e0b3c2f35663b8eeb9e39f07a8b --- .../openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java index 43b5d6af5a90..51f42abcf271 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/impl/VirtualDirectoryImpl.java @@ -106,7 +106,7 @@ public class VirtualDirectoryImpl extends VirtualFileSystemEntry { return null; } if (!isValid()) { - throw new InvalidVirtualFileAccessException(this); + return handleInvalidDirectory(); } VirtualFileSystemEntry found = doFindChildInArray(name, caseSensitive); @@ -170,6 +170,15 @@ public class VirtualDirectoryImpl extends VirtualFileSystemEntry { return child; } + private VirtualFileSystemEntry handleInvalidDirectory() { + if (!ApplicationManager.getApplication().isReadAccessAllowed()) { + // We can be inside refreshAndFindFileByPath, which must be called outside read action, and + // throwing an exception doesn't seem a good idea when the callers can't do anything about it + return null; + } + throw new InvalidVirtualFileAccessException(this); + } + // removes forward/back slashes from start/end and return trimmed name or null if there are slashes in the middle or it's empty private static String deSlash(@NotNull String name) { int startTrimmed = -1;