mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
Rollup merge of #123867 - eduardosm:unsafe-fns, r=ChrisDenton
Add `unsafe` to two functions with safety invariants
This commit is contained in:
commit
3026204e84
@ -45,13 +45,11 @@ impl Thread {
|
||||
Err(io::Error::last_os_error())
|
||||
};
|
||||
|
||||
extern "system" fn thread_start(main: *mut c_void) -> c::DWORD {
|
||||
unsafe {
|
||||
// Next, reserve some stack space for if we otherwise run out of stack.
|
||||
stack_overflow::reserve_stack();
|
||||
// Finally, let's run some code.
|
||||
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
|
||||
}
|
||||
unsafe extern "system" fn thread_start(main: *mut c_void) -> c::DWORD {
|
||||
// Next, reserve some stack space for if we otherwise run out of stack.
|
||||
stack_overflow::reserve_stack();
|
||||
// Finally, let's run some code.
|
||||
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
|
||||
0
|
||||
}
|
||||
}
|
||||
@ -59,15 +57,19 @@ impl Thread {
|
||||
pub fn set_name(name: &CStr) {
|
||||
if let Ok(utf8) = name.to_str() {
|
||||
if let Ok(utf16) = to_u16s(utf8) {
|
||||
Self::set_name_wide(&utf16)
|
||||
unsafe {
|
||||
// SAFETY: the vec returned by `to_u16s` ends with a zero value
|
||||
Self::set_name_wide(&utf16)
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
pub fn set_name_wide(name: &[u16]) {
|
||||
unsafe {
|
||||
c::SetThreadDescription(c::GetCurrentThread(), name.as_ptr());
|
||||
};
|
||||
/// # Safety
|
||||
///
|
||||
/// `name` must end with a zero value
|
||||
pub unsafe fn set_name_wide(name: &[u16]) {
|
||||
c::SetThreadDescription(c::GetCurrentThread(), name.as_ptr());
|
||||
}
|
||||
|
||||
pub fn join(self) {
|
||||
|
Loading…
Reference in New Issue
Block a user