From 3b4f9a034a4943a88fe8c855009757deff868df6 Mon Sep 17 00:00:00 2001 From: Gerhard Olsson Date: Tue, 9 Feb 2021 23:06:26 +0100 Subject: [PATCH] Check if path exists before creating FileInfo Will avoid exceptions for illegal characters etc --- GitCommands/FileInfoExtensions.cs | 4 ++-- GitUI/CommandsDialogs/BrowseDialog/FormBrowseUtil.cs | 10 +++++----- GitUI/CommandsDialogs/FormBrowse.cs | 5 ----- GitUI/CommandsDialogs/RevisionDiffControl.cs | 2 +- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/GitCommands/FileInfoExtensions.cs b/GitCommands/FileInfoExtensions.cs index 63c2cdbccf0..f63b9ae346c 100644 --- a/GitCommands/FileInfoExtensions.cs +++ b/GitCommands/FileInfoExtensions.cs @@ -11,14 +11,14 @@ public static class FileInfoExtensions /// public static void MakeFileTemporaryWritable(string fileName, Action writableAction) { - var fileInfo = new FileInfo(fileName); - if (!fileInfo.Exists) + if (!File.Exists(fileName)) { // The file doesn't exist yet, no need to make it writable writableAction(fileName); return; } + var fileInfo = new FileInfo(fileName); var oldAttributes = fileInfo.Attributes; fileInfo.Attributes = FileAttributes.Normal; writableAction(fileName); diff --git a/GitUI/CommandsDialogs/BrowseDialog/FormBrowseUtil.cs b/GitUI/CommandsDialogs/BrowseDialog/FormBrowseUtil.cs index fcfa8f4fb2e..2da8df23a29 100644 --- a/GitUI/CommandsDialogs/BrowseDialog/FormBrowseUtil.cs +++ b/GitUI/CommandsDialogs/BrowseDialog/FormBrowseUtil.cs @@ -6,8 +6,7 @@ internal static class FormBrowseUtil { public static bool FileOrParentDirectoryExists(string path) { - var fileInfo = new FileInfo(path); - return fileInfo.Exists || (fileInfo.Directory is not null && fileInfo.Directory.Exists); + return File.Exists(path) || (Directory.Exists(path) && new FileInfo(path).Directory.Exists); } public static bool IsFileOrDirectory(string path) @@ -17,13 +16,14 @@ public static bool IsFileOrDirectory(string path) public static void ShowFileOrParentFolderInFileExplorer(string path) { - var fileInfo = new FileInfo(path); - if (fileInfo.Exists) + if (File.Exists(path)) { + var fileInfo = new FileInfo(path); OsShellUtil.SelectPathInFileExplorer(fileInfo.FullName); } - else if (fileInfo.Directory.Exists) + else if (Directory.Exists(path)) { + var fileInfo = new FileInfo(path); OsShellUtil.OpenWithFileExplorer(fileInfo.Directory.FullName); } } diff --git a/GitUI/CommandsDialogs/FormBrowse.cs b/GitUI/CommandsDialogs/FormBrowse.cs index 6061bdff2c5..7c6ec549bd0 100644 --- a/GitUI/CommandsDialogs/FormBrowse.cs +++ b/GitUI/CommandsDialogs/FormBrowse.cs @@ -2467,11 +2467,6 @@ public static void OpenContainingFolder(FileStatusList diffFiles, GitModule modu foreach (var item in diffFiles.SelectedItems) { string filePath = PathUtil.Combine(module.WorkingDir, item.Item.Name.ToNativePath()); - if (string.IsNullOrWhiteSpace(filePath)) - { - continue; - } - FormBrowseUtil.ShowFileOrParentFolderInFileExplorer(filePath); } } diff --git a/GitUI/CommandsDialogs/RevisionDiffControl.cs b/GitUI/CommandsDialogs/RevisionDiffControl.cs index 8da04a7961d..3c615d0c5dd 100644 --- a/GitUI/CommandsDialogs/RevisionDiffControl.cs +++ b/GitUI/CommandsDialogs/RevisionDiffControl.cs @@ -536,7 +536,7 @@ private void UpdateStatusOfMenuItems() foreach (var item in DiffFiles.SelectedItems) { string filePath = _fullPathResolver.Resolve(item.Item.Name); - if (filePath is not null && FormBrowseUtil.FileOrParentDirectoryExists(filePath)) + if (FormBrowseUtil.FileOrParentDirectoryExists(filePath)) { openContainingFolderToolStripMenuItem.Enabled = true; break;