diff --git a/crates/platform/src/objc.rs b/crates/platform/src/objc.rs index 41c7442..916d739 100644 --- a/crates/platform/src/objc.rs +++ b/crates/platform/src/objc.rs @@ -300,10 +300,10 @@ pub fn msg_send_fn() -> unsafe extern "C" fn() { macro_rules! msg_send { // No arguments: msg_send![receiver, selector] [$receiver:expr, $sel:ident] => {{ - let sel = $crate::objc::Sel::register(concat!(stringify!($sel), "\0").as_bytes() - .split_last().map(|(_, s)| unsafe { std::ffi::CStr::from_bytes_with_nul_unchecked( - std::slice::from_raw_parts(s.as_ptr(), s.len() + 1) - ) }).unwrap()); + let sel_name = concat!(stringify!($sel), "\0"); + let sel = $crate::objc::Sel::register(unsafe { + std::ffi::CStr::from_bytes_with_nul_unchecked(sel_name.as_bytes()) + }); let func: unsafe extern "C" fn(*mut std::os::raw::c_void, *mut std::os::raw::c_void) -> _ = unsafe { std::mem::transmute($crate::objc::msg_send_fn()) }; unsafe { func($receiver as *mut std::os::raw::c_void, sel.as_ptr() as *mut std::os::raw::c_void) }