From 2e79687cf81d088401e7459b580513aae5bf944a Mon Sep 17 00:00:00 2001 From: Michael Seibt Date: Tue, 20 Apr 2021 23:13:05 +0200 Subject: [PATCH] Handle more exceptions as failed external operation --- GitUI/NBugReports/BugReportInvoker.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/GitUI/NBugReports/BugReportInvoker.cs b/GitUI/NBugReports/BugReportInvoker.cs index ec8b6f440a6..d9b949986ad 100644 --- a/GitUI/NBugReports/BugReportInvoker.cs +++ b/GitUI/NBugReports/BugReportInvoker.cs @@ -1,7 +1,10 @@ #nullable enable using System; +using System.ComponentModel; using System.Diagnostics; +using System.IO; +using System.Security; using System.Text; using System.Windows.Forms; using BugReporter; @@ -79,7 +82,13 @@ public static void Report(Exception exception, bool isTerminating) } bool isUserExternalOperation = exception is UserExternalOperationException; - bool isExternalOperation = exception is ExternalOperationException; + bool isExternalOperation = exception is ExternalOperationException + or IOException + or SecurityException + or FileNotFoundException + or DirectoryNotFoundException + or PathTooLongException + or Win32Exception; StringBuilder text = new(); string rootError = Append(text, exception); @@ -111,7 +120,7 @@ public static void Report(Exception exception, bool isTerminating) taskDialogCommandLink.Click += (s, e) => { taskDialog.Close(); - ShowNBug(OwnerForm, exception, isTerminating); + ShowNBug(OwnerForm, exception, isExternalOperation, isTerminating); }; taskDialog.Controls.Add(taskDialogCommandLink); @@ -134,13 +143,13 @@ void AddIgnoreOrCloseButton() } } - private static void ShowNBug(IWin32Window? owner, Exception exception, bool isTerminating) + private static void ShowNBug(IWin32Window? owner, Exception exception, bool isExternalOperation, bool isTerminating) { using BugReportForm form = new(); DialogResult result = form.ShowDialog(owner, new SerializableException(exception), UserEnvironmentInformation.GetInformation(), canIgnore: !isTerminating, - showIgnore: exception is ExternalOperationException, + showIgnore: isExternalOperation, focusDetails: exception is UserExternalOperationException); if (isTerminating || result == DialogResult.Abort) { @@ -150,7 +159,7 @@ private static void ShowNBug(IWin32Window? owner, Exception exception, bool isTe private static string Base64Encode(string plainText) { - var plainTextBytes = Encoding.UTF8.GetBytes(plainText); + byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText); return Convert.ToBase64String(plainTextBytes); } }