From 7d8c00c9b9678f26ee8ae2932378d81108a7ac7d Mon Sep 17 00:00:00 2001 From: halinhtvn3a <77691576+halinhtvn3a@users.noreply.github.com> Date: Fri, 27 Mar 2026 00:48:05 +0700 Subject: [PATCH] refactor: file streams not properly disposed on preview failure The `PreviewFile` method opens a file stream with `File.Open()` but doesn't handle exceptions. If an exception occurs after opening the stream but before assignment to the `Document` property, the stream will leak. This is a resource leak that could cause file locking issues or exhaust file handles over time, especially when previewing problematic files. Affected files: RichTextViewer.xaml.cs Signed-off-by: halinhtvn3a <77691576+halinhtvn3a@users.noreply.github.com> --- .../RichTextViewer.xaml.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/FileExplorer.Extension.RichTextPreview/RichTextViewer.xaml.cs b/FileExplorer.Extension.RichTextPreview/RichTextViewer.xaml.cs index 34835e2..8105407 100644 --- a/FileExplorer.Extension.RichTextPreview/RichTextViewer.xaml.cs +++ b/FileExplorer.Extension.RichTextPreview/RichTextViewer.xaml.cs @@ -36,7 +36,17 @@ public RichTextViewer() public Task PreviewFile(string filePath) { ZoomFactor = 100f; - Document = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); + Stream stream = null; + try + { + stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); + Document = stream; + } + catch + { + stream?.Dispose(); + throw; + } return Task.CompletedTask; }