From e993ea3c644f03c11420614250fdf111961aee3d Mon Sep 17 00:00:00 2001 From: z4pf1sh <155286196+z4pf1sh@users.noreply.github.com> Date: Mon, 3 Jun 2024 20:17:40 +0800 Subject: [PATCH] [PreviewPane]Fix crash on 64 bit file handles (#32826) * [PreviewPane] Parse input window handle as IntPtr type instead of Int32 * [PreviewPane] Apply IntPtr arg parser fix for the following handlers: GcodePreviewHandler MarkdownPreviewHandler PdfPreviewHandler QoiPreviewHandler SvgPreviewHandler --- src/modules/previewpane/GcodePreviewHandler/Program.cs | 4 ++-- src/modules/previewpane/MarkdownPreviewHandler/Program.cs | 4 ++-- src/modules/previewpane/MonacoPreviewHandler/Program.cs | 4 ++-- src/modules/previewpane/PdfPreviewHandler/Program.cs | 4 ++-- src/modules/previewpane/QoiPreviewHandler/Program.cs | 4 ++-- src/modules/previewpane/SvgPreviewHandler/Program.cs | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/modules/previewpane/GcodePreviewHandler/Program.cs b/src/modules/previewpane/GcodePreviewHandler/Program.cs index e00c668a51..0b0696fd01 100644 --- a/src/modules/previewpane/GcodePreviewHandler/Program.cs +++ b/src/modules/previewpane/GcodePreviewHandler/Program.cs @@ -27,7 +27,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Gcode if (args.Length == 6) { string filePath = args[0]; - int hwnd = Convert.ToInt32(args[1], 16); + IntPtr hwnd = IntPtr.Parse(args[1], NumberStyles.HexNumber, CultureInfo.InvariantCulture); int left = Convert.ToInt32(args[2], 10); int right = Convert.ToInt32(args[3], 10); @@ -36,7 +36,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Gcode Rectangle s = new Rectangle(left, top, right - left, bottom - top); _previewHandlerControl = new GcodePreviewHandlerControl(); - _previewHandlerControl.SetWindow((IntPtr)hwnd, s); + _previewHandlerControl.SetWindow(hwnd, s); _previewHandlerControl.DoPreview(filePath); NativeEventWaiter.WaitForEventLoop( diff --git a/src/modules/previewpane/MarkdownPreviewHandler/Program.cs b/src/modules/previewpane/MarkdownPreviewHandler/Program.cs index c746df97b1..8b6b66f974 100644 --- a/src/modules/previewpane/MarkdownPreviewHandler/Program.cs +++ b/src/modules/previewpane/MarkdownPreviewHandler/Program.cs @@ -27,7 +27,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Markdown if (args.Length == 6) { string filePath = args[0]; - int hwnd = Convert.ToInt32(args[1], 16); + IntPtr hwnd = IntPtr.Parse(args[1], NumberStyles.HexNumber, CultureInfo.InvariantCulture); int left = Convert.ToInt32(args[2], 10); int right = Convert.ToInt32(args[3], 10); @@ -36,7 +36,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Markdown Rectangle s = new Rectangle(left, top, right - left, bottom - top); _previewHandlerControl = new MarkdownPreviewHandlerControl(); - _previewHandlerControl.SetWindow((IntPtr)hwnd, s); + _previewHandlerControl.SetWindow(hwnd, s); _previewHandlerControl.DoPreview(filePath); NativeEventWaiter.WaitForEventLoop( diff --git a/src/modules/previewpane/MonacoPreviewHandler/Program.cs b/src/modules/previewpane/MonacoPreviewHandler/Program.cs index 50e1d58957..7821d25658 100644 --- a/src/modules/previewpane/MonacoPreviewHandler/Program.cs +++ b/src/modules/previewpane/MonacoPreviewHandler/Program.cs @@ -30,7 +30,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Monaco if (args.Length == 6) { string filePath = args[0]; - int hwnd = Convert.ToInt32(args[1], 16); + IntPtr hwnd = IntPtr.Parse(args[1], NumberStyles.HexNumber, CultureInfo.InvariantCulture); int left = Convert.ToInt32(args[2], 10); int right = Convert.ToInt32(args[3], 10); @@ -39,7 +39,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Monaco Rectangle s = new Rectangle(left, top, right - left, bottom - top); _previewHandlerControl = new MonacoPreviewHandlerControl(); - _previewHandlerControl.SetWindow((IntPtr)hwnd, s); + _previewHandlerControl.SetWindow(hwnd, s); _previewHandlerControl.DoPreview(filePath); NativeEventWaiter.WaitForEventLoop( diff --git a/src/modules/previewpane/PdfPreviewHandler/Program.cs b/src/modules/previewpane/PdfPreviewHandler/Program.cs index 929be0dd15..d9427dc215 100644 --- a/src/modules/previewpane/PdfPreviewHandler/Program.cs +++ b/src/modules/previewpane/PdfPreviewHandler/Program.cs @@ -26,7 +26,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Pdf if (args.Length == 6) { string filePath = args[0]; - int hwnd = Convert.ToInt32(args[1], 16); + IntPtr hwnd = IntPtr.Parse(args[1], NumberStyles.HexNumber, CultureInfo.InvariantCulture); int left = Convert.ToInt32(args[2], 10); int right = Convert.ToInt32(args[3], 10); @@ -35,7 +35,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Pdf Rectangle s = new Rectangle(left, top, right - left, bottom - top); _previewHandlerControl = new PdfPreviewHandlerControl(); - _previewHandlerControl.SetWindow((IntPtr)hwnd, s); + _previewHandlerControl.SetWindow(hwnd, s); _previewHandlerControl.DoPreview(filePath); NativeEventWaiter.WaitForEventLoop( diff --git a/src/modules/previewpane/QoiPreviewHandler/Program.cs b/src/modules/previewpane/QoiPreviewHandler/Program.cs index 91d1916881..5a9f5bfa2b 100644 --- a/src/modules/previewpane/QoiPreviewHandler/Program.cs +++ b/src/modules/previewpane/QoiPreviewHandler/Program.cs @@ -27,7 +27,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Qoi if (args.Length == 6) { string filePath = args[0]; - int hwnd = Convert.ToInt32(args[1], 16); + IntPtr hwnd = IntPtr.Parse(args[1], NumberStyles.HexNumber, CultureInfo.InvariantCulture); int left = Convert.ToInt32(args[2], 10); int right = Convert.ToInt32(args[3], 10); @@ -36,7 +36,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Qoi Rectangle s = new Rectangle(left, top, right - left, bottom - top); _previewHandlerControl = new QoiPreviewHandlerControl(); - _previewHandlerControl.SetWindow((IntPtr)hwnd, s); + _previewHandlerControl.SetWindow(hwnd, s); _previewHandlerControl.DoPreview(filePath); NativeEventWaiter.WaitForEventLoop( diff --git a/src/modules/previewpane/SvgPreviewHandler/Program.cs b/src/modules/previewpane/SvgPreviewHandler/Program.cs index f59654a0ef..4b506ded1a 100644 --- a/src/modules/previewpane/SvgPreviewHandler/Program.cs +++ b/src/modules/previewpane/SvgPreviewHandler/Program.cs @@ -27,7 +27,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Svg if (args.Length == 6) { string filePath = args[0]; - int hwnd = Convert.ToInt32(args[1], 16); + IntPtr hwnd = IntPtr.Parse(args[1], NumberStyles.HexNumber, CultureInfo.InvariantCulture); int left = Convert.ToInt32(args[2], 10); int right = Convert.ToInt32(args[3], 10); @@ -36,7 +36,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Svg Rectangle s = new Rectangle(left, top, right - left, bottom - top); _previewHandlerControl = new SvgPreviewControl(); - _previewHandlerControl.SetWindow((IntPtr)hwnd, s); + _previewHandlerControl.SetWindow(hwnd, s); _previewHandlerControl.DoPreview(filePath); NativeEventWaiter.WaitForEventLoop(