From b3f7f4dff75e3beaa7b6e60f9e5484f82fff8065 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 27 Oct 2023 07:51:38 +0200 Subject: [PATCH] replace transmute by raw pointer cast --- library/std/src/thread/mod.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/library/std/src/thread/mod.rs b/library/std/src/thread/mod.rs index 7b26068c294fc..68ea486933ab1 100644 --- a/library/std/src/thread/mod.rs +++ b/library/std/src/thread/mod.rs @@ -545,6 +545,13 @@ impl Builder { scope_data.increment_num_running_threads(); } + let main = Box::new(main); + #[cfg(bootstrap)] + let main = + unsafe { mem::transmute::, Box>(main) }; + #[cfg(not(bootstrap))] + let main = unsafe { Box::from_raw(Box::into_raw(main) as *mut (dyn FnOnce() + 'static)) }; + Ok(JoinInner { // SAFETY: // @@ -559,14 +566,7 @@ impl Builder { // Similarly, the `sys` implementation must guarantee that no references to the closure // exist after the thread has terminated, which is signaled by `Thread::join` // returning. - native: unsafe { - imp::Thread::new( - stack_size, - mem::transmute::, Box>( - Box::new(main), - ), - )? - }, + native: unsafe { imp::Thread::new(stack_size, main)? }, thread: my_thread, packet: my_packet, })