From 592cd309b3a0d2eb7b7d346ac130d2375f21c0b5 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Wed, 6 Dec 2023 09:37:42 -0300 Subject: [PATCH] fix(macos): check if image file exists to prevent crash --- crates/drag/src/lib.rs | 2 ++ crates/drag/src/platform_impl/macos/mod.rs | 3 +++ 2 files changed, 5 insertions(+) diff --git a/crates/drag/src/lib.rs b/crates/drag/src/lib.rs index f075449..aee2aa9 100644 --- a/crates/drag/src/lib.rs +++ b/crates/drag/src/lib.rs @@ -93,6 +93,8 @@ pub enum Error { UnsupportedWindowHandle, #[error("failed to start drag")] FailedToStartDrag, + #[error("drag image not found")] + ImageNotFound, #[cfg(target_os = "linux")] #[error("empty drag target list")] EmptyTargetList, diff --git a/crates/drag/src/platform_impl/macos/mod.rs b/crates/drag/src/platform_impl/macos/mod.rs index da5271a..fe09f8a 100644 --- a/crates/drag/src/platform_impl/macos/mod.rs +++ b/crates/drag/src/platform_impl/macos/mod.rs @@ -46,6 +46,9 @@ pub fn start_drag( let img: id = msg_send![class!(NSImage), alloc]; let img: id = match image { Image::File(path) => { + if !path.exists() { + return Err(crate::Error::ImageNotFound); + } NSImage::initByReferencingFile_(img, new_nsstring(&path.to_string_lossy())) } Image::Raw(bytes) => {