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())
|
Err(io::Error::last_os_error())
|
||||||
};
|
};
|
||||||
|
|
||||||
extern "system" fn thread_start(main: *mut c_void) -> c::DWORD {
|
unsafe 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.
|
||||||
// Next, reserve some stack space for if we otherwise run out of stack.
|
stack_overflow::reserve_stack();
|
||||||
stack_overflow::reserve_stack();
|
// Finally, let's run some code.
|
||||||
// Finally, let's run some code.
|
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
|
||||||
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
|
|
||||||
}
|
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,15 +57,19 @@ impl Thread {
|
|||||||
pub fn set_name(name: &CStr) {
|
pub fn set_name(name: &CStr) {
|
||||||
if let Ok(utf8) = name.to_str() {
|
if let Ok(utf8) = name.to_str() {
|
||||||
if let Ok(utf16) = to_u16s(utf8) {
|
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]) {
|
/// # Safety
|
||||||
unsafe {
|
///
|
||||||
c::SetThreadDescription(c::GetCurrentThread(), name.as_ptr());
|
/// `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) {
|
pub fn join(self) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user