@@ -319,14 +319,12 @@ mod imp {
319
319
))]
320
320
unsafe fn get_stack_start() -> Option<*mut libc::c_void> {
321
321
let mut ret = None;
322
- let mut attr: mem::MaybeUninit<libc::pthread_attr_t> = if cfg!(target_os = "freebsd") {
323
- let mut attr = mem::MaybeUninit::uninit();
324
- assert_eq!(libc::pthread_attr_init((&raw mut attr) as *mut _), 0);
325
- attr
326
- } else {
327
- mem::MaybeUninit::zeroed()
328
- };
329
-
322
+ let mut attr: mem::MaybeUninit<libc::pthread_attr_t> = mem::MaybeUninit::uninit();
323
+ if !cfg!(target_os = "freebsd") {
324
+ attr = mem::MaybeUninit::zeroed();
325
+ }
326
+ #[cfg(target_os = "freebsd")]
327
+ assert_eq!(libc::pthread_attr_init(attr.as_mut_ptr()), 0);
330
328
#[cfg(target_os = "freebsd")]
331
329
let e = libc::pthread_attr_get_np(libc::pthread_self(), attr.as_mut_ptr());
332
330
#[cfg(not(target_os = "freebsd"))]
@@ -517,22 +515,20 @@ mod imp {
517
515
// FIXME: I am probably not unsafe.
518
516
unsafe fn current_guard() -> Option<Range<usize>> {
519
517
let mut ret = None;
520
- let attr: mem::MaybeUninit<libc::pthread_attr_t> = if cfg!(target_os = "freebsd") {
521
- let mut attr = mem::MaybeUninit::uninit();
522
- assert_eq!(libc::pthread_attr_init((&raw mut attr) as *mut _), 0);
523
- attr
524
- } else {
525
- mem::MaybeUninit::zeroed()
526
- };
527
518
528
- let mut attr = unsafe { attr.assume_init() };
519
+ let mut attr: mem::MaybeUninit<libc::pthread_attr_t> = mem::MaybeUninit::uninit();
520
+ if !cfg!(target_os = "freebsd") {
521
+ attr = mem::MaybeUninit::zeroed();
522
+ }
523
+ #[cfg(target_os = "freebsd")]
524
+ assert_eq!(libc::pthread_attr_init(attr.as_mut_ptr()), 0);
529
525
#[cfg(target_os = "freebsd")]
530
- let e = libc::pthread_attr_get_np(libc::pthread_self(), &mut attr);
526
+ let e = libc::pthread_attr_get_np(libc::pthread_self(), attr.as_mut_ptr() );
531
527
#[cfg(not(target_os = "freebsd"))]
532
- let e = libc::pthread_getattr_np(libc::pthread_self(), &mut attr);
528
+ let e = libc::pthread_getattr_np(libc::pthread_self(), attr.as_mut_ptr() );
533
529
if e == 0 {
534
530
let mut guardsize = 0;
535
- assert_eq!(libc::pthread_attr_getguardsize(& attr, &mut guardsize), 0);
531
+ assert_eq!(libc::pthread_attr_getguardsize(attr.as_ptr() , &mut guardsize), 0);
536
532
if guardsize == 0 {
537
533
if cfg!(all(target_os = "linux", target_env = "musl")) {
538
534
// musl versions before 1.1.19 always reported guard
@@ -545,7 +541,7 @@ mod imp {
545
541
}
546
542
let mut stackptr = crate::ptr::null_mut::<libc::c_void>();
547
543
let mut size = 0;
548
- assert_eq!(libc::pthread_attr_getstack(& attr, &mut stackptr, &mut size), 0);
544
+ assert_eq!(libc::pthread_attr_getstack(attr.as_ptr() , &mut stackptr, &mut size), 0);
549
545
550
546
let stackaddr = stackptr.addr();
551
547
ret = if cfg!(any(target_os = "freebsd", target_os = "netbsd", target_os = "hurd")) {
@@ -566,7 +562,7 @@ mod imp {
566
562
};
567
563
}
568
564
if e == 0 || cfg!(target_os = "freebsd") {
569
- assert_eq!(libc::pthread_attr_destroy(&mut attr), 0);
565
+ assert_eq!(libc::pthread_attr_destroy(attr.as_mut_ptr() ), 0);
570
566
}
571
567
ret
572
568
}
0 commit comments