Closed jamesWalker55 closed 6 months ago
On Windows, when a path containing forward slashes is passed as the items to drag, it causes tauri to crash.
Minimal example: Edit the tauri-app example as follows:
tauri-app
diff --git a/examples/tauri/index.html b/examples/tauri/index.html index bbf2553..978ca18 100644 --- a/examples/tauri/index.html +++ b/examples/tauri/index.html @@ -27,10 +27,11 @@ document.getElementById('drag').ondragstart = async (event) => { event.preventDefault(); - const path = await window.__TAURI__.path.resolveResource('../icon.png') + let path = await window.__TAURI__.path.resolveResource('../icon.png') + path = path.replaceAll("\\", "/"); window.__TAURI__.drag.startDrag({ item: [path], icon: path }); }; </script> </body> </html>
Alternatively, replace path with a static string with forward slashes like:
path
const path = "C:/Files/my-cool-file.png";
Both will cause Tauri to crash upon dragging.
Backtrace:
thread 'main' panicked at crates\drag\src\platform_impl\windows\mod.rs:285:60: called `Option::unwrap()` on a `None` value stack backtrace: 0: std::panicking::begin_panic_handler at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library\std\src\panicking.rs:597 1: core::panicking::panic_fmt at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library\core\src\panicking.rs:72 2: core::panicking::panic at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library\core\src\panicking.rs:127 3: enum2$<core::option::Option<windows::Windows::Win32::UI::Shell::IShellItemArray> >::unwrap<windows::Windows::Win32::UI::Shell::IShellItemArray> at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\option.rs:935 4: drag::platform_impl::platform::get_file_data_object at .\crates\drag\src\platform_impl\windows\mod.rs:285 5: drag::platform_impl::platform::start_drag<tauri::window::Window<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > > > at .\crates\drag\src\platform_impl\windows\mod.rs:202 6: tauri_plugin_drag::start_drag::async_fn$0::closure$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > > at .\crates\tauri-plugin\src\lib.rs:49 7: core::ops::function::FnOnce::call_once<tauri_plugin_drag::start_drag::async_fn$0::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >,tuple$<> > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\ops\function.rs:250 8: alloc::boxed::impl$47::call_once<tuple$<>,dyn$<core::ops::function::FnOnce<tuple$<>,assoc$<Output,tuple$<> > >,core::marker::Send>,alloc::alloc::Global> at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\alloc\src\boxed.rs:2007 9: tauri_runtime_wry::handle_user_message<enum2$<tauri::EventLoopMessage> > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-runtime-wry-0.14.2\src\lib.rs:2411 10: tauri_runtime_wry::handle_event_loop<enum2$<tauri::EventLoopMessage> > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-runtime-wry-0.14.2\src\lib.rs:3075 11: tauri_runtime_wry::impl$47::run::closure$0<enum2$<tauri::EventLoopMessage>,tauri::app::impl$18::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,tauri::app::impl$19::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventL at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-runtime-wry-0.14.2\src\lib.rs:2342 12: tao::platform_impl::platform::event_loop::impl$2::run_return::closure$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$47::run::closure_env$0<enum2$<tauri::EventLoopMessage>,tauri::app::impl$18::run::closure_ at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop.rs:234 13: alloc::boxed::impl$48::call_mut<tuple$<enum2$<tao::event::Event<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,ref_mut$<enum2$<tao::event_loop::ControlFlow> > >,dyn$<core::ops::function::FnMut<tuple$<enum2$<tao::event::Event<enu at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\alloc\src\boxed.rs:2014 14: tao::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop\runner.rs:250 15: core::panic::unwind_safe::impl$23::call_once<tuple$<>,tao::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\panic\unwind_safe.rs:271 16: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,tuple$<> > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:504 17: tauri::endpoints::app::_::impl$0::deserialize::impl$0::expecting 18: std::panicking::try<tuple$<>,core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > > > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:468 19: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,tuple$<> > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panic.rs:142 20: tao::platform_impl::platform::event_loop::runner::EventLoopRunner<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::catch_unwind<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tuple$<>,tao::platform_impl::plat at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop\runner.rs:156 21: tao::platform_impl::platform::event_loop::runner::EventLoopRunner<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::call_event_handler<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop\runner.rs:242 22: tao::platform_impl::platform::event_loop::runner::EventLoopRunner<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::send_event<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop\runner.rs:224 23: tao::platform_impl::platform::event_loop::ThreadMsgTargetSubclassInput<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::send_event<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop.rs:127 24: tao::platform_impl::platform::event_loop::thread_event_target_callback::closure$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop.rs:2226 25: core::ops::function::FnOnce::call_once<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >,tuple$<> > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\ops\function.rs:250 26: core::panic::unwind_safe::impl$23::call_once<windows::Windows::Win32::Foundation::LRESULT,tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\panic\unwind_safe.rs:271 27: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,windows::Windows::Win32 at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:504 28: std::panicking::try::do_catch<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$1<core::pin::Pin<alloc::boxed::Box<enum2$<tauri::hooks::impl$7::respond_async::async_block_env$0<tauri_runtime_wry::Wry<enum2$ 29: std::panicking::try<windows::Windows::Win32::Foundation::LRESULT,core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMess at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:468 30: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,windows::Windows::Win32::Fo at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panic.rs:142 31: tao::platform_impl::platform::event_loop::runner::EventLoopRunner<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::catch_unwind<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,windows::Windows::Win32::Foundati at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop\runner.rs:156 32: tao::platform_impl::platform::event_loop::thread_event_target_callback<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop.rs:2275 33: DefSubclassProc 34: DSA_Create 35: CallWindowProcW 36: DispatchMessageW 37: windows::Windows::Win32::UI::WindowsAndMessaging::DispatchMessageW at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\windows-0.39.0\src\Windows\Win32\UI\WindowsAndMessaging\mod.rs:2671 38: tao::platform_impl::platform::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run_return<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$47::run::closure_env$0<en at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop.rs:264 39: tao::platform_impl::platform::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$47::run::closure_env$0<enum2$<ta at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\platform_impl\windows\event_loop.rs:218 40: tao::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$47::run::closure_env$0<enum2$<tauri::EventLoopMessage>,ta at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.16.5\src\event_loop.rs:179 41: tauri_runtime_wry::impl$47::run<enum2$<tauri::EventLoopMessage>,tauri::app::impl$18::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,tauri::app::impl$19::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-runtime-wry-0.14.2\src\lib.rs:2314 42: tauri::app::App<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >::run<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,tauri::app::impl$19::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,tauri_utils::assets:: at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-1.5.3\src\app.rs:868 43: tauri::app::Builder<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >::run<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,tauri_utils::assets::EmbeddedAssets> at C:\Users\James\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-1.5.3\src\app.rs:1722 44: tauri_app::main at .\examples\tauri\src\main.rs:2 45: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> > at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\ops\function.rs:250
Thanks for the heads up!
On Windows, when a path containing forward slashes is passed as the items to drag, it causes tauri to crash.
Minimal example: Edit the
tauri-app
example as follows:Alternatively, replace
path
with a static string with forward slashes like:Both will cause Tauri to crash upon dragging.
Backtrace: