From 1088182087cc8a9287e7903bea6dac5e94392ead Mon Sep 17 00:00:00 2001 From: Keith Hill Date: Mon, 8 Jan 2018 23:03:26 -0700 Subject: [PATCH] Fix crash when seting PSSA rules w/Untitled active editor --- .../Server/LanguageServer.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs index 6b2413ea8..c22d694ce 100644 --- a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs +++ b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs @@ -16,6 +16,7 @@ using System.IO; using System.Linq; using System.Management.Automation; +using System.Security; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; @@ -247,11 +248,25 @@ private async Task HandleSetPSSARulesRequest( } var sendresult = requestContext.SendResult(null); - var scripFile = editorSession.Workspace.GetFile((string)dynParams.filepath); + ScriptFile scriptFile = null; + try + { + scriptFile = editorSession.Workspace.GetFile((string)dynParams.filepath); + } + catch (Exception ex) when ( + ex is FileNotFoundException || + ex is NotSupportedException || + ex is PathTooLongException || + ex is SecurityException) + { + var errMsg = $"Failed to get ScriptFile path for '{(string)dynParams.filepath}'"; + Logger.WriteException(errMsg, ex); + } + await RunScriptDiagnostics( - new ScriptFile[] { scripFile }, - editorSession, - this.messageSender.SendEvent); + (scriptFile != null) ? new ScriptFile[] { scriptFile } : new ScriptFile[0], + editorSession, + this.messageSender.SendEvent); await sendresult; }