Skip to content

Commit

Permalink
Add unsafe to two functions with safety invariants
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardosm committed Apr 12, 2024
1 parent bd71213 commit a6ed319
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions library/std/src/sys/pal/windows/thread.rs
Expand Up @@ -45,29 +45,31 @@ 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
}
}

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) {
Expand Down

0 comments on commit a6ed319

Please sign in to comment.