From 7cd8b23e5613b196b1f02732bf40a8e773178a03 Mon Sep 17 00:00:00 2001 From: amrbashir Date: Wed, 13 Nov 2024 04:55:59 +0200 Subject: [PATCH] simplify and fix leak --- plugins/opener/src/reveal_item_in_dir.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/opener/src/reveal_item_in_dir.rs b/plugins/opener/src/reveal_item_in_dir.rs index fbd91e29..098a7c5d 100644 --- a/plugins/opener/src/reveal_item_in_dir.rs +++ b/plugins/opener/src/reveal_item_in_dir.rs @@ -64,10 +64,10 @@ mod imp { .ok_or_else(|| crate::Error::NoParent(file.to_path_buf()))?; let dir = HSTRING::from(dir); - let dir_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(dir.as_ptr())) }; + let dir_item = unsafe { ILCreateFromPathW(&dir) }; let file_h = HSTRING::from(file); - let file_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(file_h.as_ptr())) }; + let file_item = unsafe { ILCreateFromPathW(&file_h) }; unsafe { if let Err(e) = SHOpenFolderAndSelectItems(dir_item, Some(&[file_item]), 0) { @@ -86,7 +86,10 @@ mod imp { ..std::mem::zeroed() }; - ShellExecuteExW(&mut info)?; + ShellExecuteExW(&mut info).inspect_err(|_| { + ILFree(Some(dir_item)); + ILFree(Some(file_item)); + })?; } } }