From ecdc1c7ec42733585b568d2bde62b95dfbba66df Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Tue, 18 Sep 2018 16:02:04 -0700 Subject: [PATCH 1/2] Fix crash for finding symbols on bad paths --- src/PowerShellEditorServices/Language/LanguageService.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/PowerShellEditorServices/Language/LanguageService.cs b/src/PowerShellEditorServices/Language/LanguageService.cs index 70979cd2c..f7512af08 100644 --- a/src/PowerShellEditorServices/Language/LanguageService.cs +++ b/src/PowerShellEditorServices/Language/LanguageService.cs @@ -13,6 +13,7 @@ using System.Management.Automation; using System.Management.Automation.Language; using System.Runtime.InteropServices; +using System.Security; using System.Threading; using System.Threading.Tasks; @@ -346,9 +347,13 @@ public async Task FindReferencesOfSymbol( { scriptFile = workspace.GetFile(file); } - catch (IOException) + catch (Exception e) when (e is IOException + || e is SecurityException + || e is FileNotFoundException + || e is DirectoryNotFoundException + || e is PathTooLongException) { - // If the file has ceased to exist for some reason, we just skip it + // If we can't access the file for some reason, just ignore it continue; } From 7e05c89d0a83f1f6a4b2dc479f7f1e303047da46 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Tue, 18 Sep 2018 16:20:35 -0700 Subject: [PATCH 2/2] Protect against UnauthorizedAccessException as well --- src/PowerShellEditorServices/Language/LanguageService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/PowerShellEditorServices/Language/LanguageService.cs b/src/PowerShellEditorServices/Language/LanguageService.cs index f7512af08..e30c00b8a 100644 --- a/src/PowerShellEditorServices/Language/LanguageService.cs +++ b/src/PowerShellEditorServices/Language/LanguageService.cs @@ -351,7 +351,8 @@ public async Task FindReferencesOfSymbol( || e is SecurityException || e is FileNotFoundException || e is DirectoryNotFoundException - || e is PathTooLongException) + || e is PathTooLongException + || e is UnauthorizedAccessException) { // If we can't access the file for some reason, just ignore it continue;