diff options
| author | Ralf Jung <post@ralfj.de> | 2023-10-27 07:51:38 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-10-27 08:02:16 +0200 |
| commit | b3f7f4dff75e3beaa7b6e60f9e5484f82fff8065 (patch) | |
| tree | c7218ebf4528b665840a1d525cf10fca4ffd2316 | |
| parent | 31ffe48723dafd06cff75300cf37ba2f568221a1 (diff) | |
| download | rust-b3f7f4dff75e3beaa7b6e60f9e5484f82fff8065.tar.gz rust-b3f7f4dff75e3beaa7b6e60f9e5484f82fff8065.zip | |
replace transmute by raw pointer cast
| -rw-r--r-- | library/std/src/thread/mod.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/library/std/src/thread/mod.rs b/library/std/src/thread/mod.rs index 7b26068c294..68ea486933a 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<dyn FnOnce() + 'a>, Box<dyn FnOnce() + 'static>>(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<dyn FnOnce() + 'a>, Box<dyn FnOnce() + 'static>>( - Box::new(main), - ), - )? - }, + native: unsafe { imp::Thread::new(stack_size, main)? }, thread: my_thread, packet: my_packet, }) |
