diff options
| author | Pavel Grigorenko <GrigorenkoPV@ya.ru> | 2024-07-14 22:17:28 +0300 |
|---|---|---|
| committer | Pavel Grigorenko <GrigorenkoPV@ya.ru> | 2024-07-15 22:01:09 +0300 |
| commit | f6fe7e49a2bc2ad14513aa609b67e188470309f6 (patch) | |
| tree | 42b16c96836b2cd4f2291396065977056802bcd2 /library/std/src/sys/pal/unix/thread.rs | |
| parent | 594702ebb575e492e2b55cb6fcb02d612e6a84d5 (diff) | |
| download | rust-f6fe7e49a2bc2ad14513aa609b67e188470309f6.tar.gz rust-f6fe7e49a2bc2ad14513aa609b67e188470309f6.zip | |
lib: replace some `mem::forget`'s with `ManuallyDrop`
Diffstat (limited to 'library/std/src/sys/pal/unix/thread.rs')
| -rw-r--r-- | library/std/src/sys/pal/unix/thread.rs | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/library/std/src/sys/pal/unix/thread.rs b/library/std/src/sys/pal/unix/thread.rs index 619f4e4121e..483697b8597 100644 --- a/library/std/src/sys/pal/unix/thread.rs +++ b/library/std/src/sys/pal/unix/thread.rs @@ -1,7 +1,7 @@ use crate::cmp; use crate::ffi::CStr; use crate::io; -use crate::mem; +use crate::mem::{self, ManuallyDrop}; use crate::num::NonZero; use crate::ptr; use crate::sys::{os, stack_overflow}; @@ -268,11 +268,9 @@ impl Thread { } pub fn join(self) { - unsafe { - let ret = libc::pthread_join(self.id, ptr::null_mut()); - mem::forget(self); - assert!(ret == 0, "failed to join thread: {}", io::Error::from_raw_os_error(ret)); - } + let id = self.into_id(); + let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) }; + assert!(ret == 0, "failed to join thread: {}", io::Error::from_raw_os_error(ret)); } pub fn id(&self) -> libc::pthread_t { @@ -280,9 +278,7 @@ impl Thread { } pub fn into_id(self) -> libc::pthread_t { - let id = self.id; - mem::forget(self); - id + ManuallyDrop::new(self).id } } |
