From 02a45661c4f836e9c21aff68f9872795cf1ee04c Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 26 Dec 2024 13:04:15 +0800 Subject: [PATCH] Add consistent error handling for GetArguments --- .../Programs/ShellLinkHelper.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs index f194ae973..a77b2ace8 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs @@ -35,10 +35,18 @@ namespace Flow.Launcher.Plugin.Program.Programs var data = new WIN32_FIND_DATAW(); var target = string.Empty; - fixed (char* bufferPtr = buffer) + try { - ((IShellLinkW)link).GetPath((PWSTR)bufferPtr, MAX_PATH, &data, (uint)SLGP_FLAGS.SLGP_SHORTPATH); - target = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(bufferPtr).ToString(); + fixed (char* bufferPtr = buffer) + { + ((IShellLinkW)link).GetPath((PWSTR)bufferPtr, MAX_PATH, &data, (uint)SLGP_FLAGS.SLGP_SHORTPATH); + target = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(bufferPtr).ToString(); + } + } + catch (COMException e) + { + ProgramLogger.LogException($"|IShellLinkW|retrieveTargetPath|{path}" + + "|Error occurred while getting program arguments", e); } // To set the app description @@ -66,11 +74,11 @@ namespace Flow.Launcher.Plugin.Program.Programs arguments = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(bufferPtr).ToString(); } } - + // To release unmanaged memory Marshal.ReleaseComObject(link); return target; - } + } } }