From 0a9c84feec3390a7bfde0850a23b982758f0da3b Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Wed, 2 Feb 2022 19:30:21 +0100 Subject: [PATCH] Fix potentially not releasing a file lock if an exception is thrown while setting up a download --- windows/TweetDuck/Browser/Base/CefBrowserComponent.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/windows/TweetDuck/Browser/Base/CefBrowserComponent.cs b/windows/TweetDuck/Browser/Base/CefBrowserComponent.cs index fd25638f..cd1d2592 100644 --- a/windows/TweetDuck/Browser/Base/CefBrowserComponent.cs +++ b/windows/TweetDuck/Browser/Base/CefBrowserComponent.cs @@ -73,19 +73,20 @@ private void OnFrameLoadEnd(object sender, FrameLoadEndEventArgs e) { public override void DownloadFile(string url, string path, Action onSuccess, Action<Exception> onError) { Cef.UIThreadTaskFactory.StartNew(() => { + var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read); + try { using IFrame frame = browser.GetMainFrame(); - var request = frame.CreateRequest(false); + var request = frame.CreateRequest(false); request.Method = "GET"; request.Url = url; request.Flags = UrlRequestFlags.AllowStoredCredentials; request.SetReferrer(Url, ReferrerPolicy.Default); - var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read); - var client = new CefDownloadRequestClient(fileStream, onSuccess, onError); - frame.CreateUrlRequest(request, client); + frame.CreateUrlRequest(request, new CefDownloadRequestClient(fileStream, onSuccess, onError)); } catch (Exception e) { + fileStream.Dispose(); onError?.Invoke(e); } });